MCP

Tool-Referenz

Jedes Tool, das der PostNext-MCP-Server bereitstellt, mit seinen Inputs, der Rückgabe-Struktur und einem kopierfertigen Beispiel.

Authentifizierung

Jede Anfrage an https://mcp.postnext.io/api benötigt einen Authorization-Header mit einem Bearer-Token. Du hast zwei Wege, eines zu erhalten.

OAuth (empfohlen für KI-Clients)

KI-Clients führen beim ersten Verbinden Dynamic Client Registration durch und leiten den Nutzer durch einen OAuth-Zustimmungsbildschirm. Die Seite /mcp/connect erledigt das automatisch. Dein Client erhält ein 30-Tage-Access-Token.

API-Schlüssel

Für Skripte und CI generierst du einen persönlichen API-Schlüssel in der PostNext-App unter Account → API-Schlüssel. Der Schlüssel beginnt mit apikey_ und wird wie jeder Bearer-Token präsentiert.

Endpoint

Alle Tool-Aufrufe gehen an einen einzigen JSON-RPC-2.0-Endpoint per HTTPS POST.

POST https://mcp.postnext.io/api

Tools

list_scheduled_posts

Listet deine geplanten Beiträge auf (zur Veröffentlichung vorgemerkt, aber noch nicht gesendet).

Argumente

limitnumber ·optional · default 20
Maximale Anzahl zurückgegebener Ergebnisse (1-100, Standard 20).
fromstring (ISO 8601) ·optional
ISO-Zeitstempel; nur Beiträge zurückgeben, die zu oder nach diesem Zeitpunkt geplant sind.

Rückgabewert

Ein Objekt mit posts: [{id, platform, content, scheduledAt, status}]. Bis zu limit Einträge.

Beispiel

curl -X POST https://mcp.postnext.io/api \
  -H "Authorization: Bearer apikey_xxx" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/call","id":1,
       "params":{"name":"list_scheduled_posts",
                 "arguments":{"limit":5}}}'

list_drafts

Listet deine Entwürfe auf (noch nicht geplant).

Argumente

limitnumber ·optional · default 20
Maximale Anzahl zurückgegebener Ergebnisse (1-100, Standard 20).

Rückgabewert

Ein Objekt mit drafts: [{id, platform, content, updatedAt}]. Bis zu limit Einträge.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":2,
 "params":{"name":"list_drafts","arguments":{"limit":10}}}

list_connected_accounts

Listet die mit deinem Team verbundenen Social-Accounts auf.

Argumente

Keine Argumente.

Rückgabewert

Ein Objekt mit accounts: [{platform, handle, connected, lastSyncAt}].

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":3,
 "params":{"name":"list_connected_accounts","arguments":{}}}

get_account_healthBezahlpaket

Ruft eine Gesundheitszusammenfassung über alle verbundenen Plattformen ab.

Argumente

platformenum ·optional
Social-Plattform: twitter, instagram, linkedin, threads oder tiktok.
windowDays7 | 30 | 90 ·optional · default 30
Rückblickzeitraum in Tagen: 7, 30 oder 90 (Standard 30).

Rückgabewert

Ein Objekt mit windowDays, postsScheduled, postsPublished, postsFailed, einer byPlatform-Aufschlüsselung und topErrors[].

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":4,
 "params":{"name":"get_account_health",
           "arguments":{"windowDays":30}}}

create_post_draft

Erstellt einen neuen Entwurf. Entwürfe werden nicht automatisch veröffentlicht.

Argumente

platformenum ·erforderlich
Social-Plattform: twitter, instagram, linkedin, threads oder tiktok.
contentstring ·erforderlich
Beitragsinhalt (1-2200 Zeichen).
mediaUrlsarray<string> ·optional
Bis zu 10 Bild- oder Video-URLs.
clientRequestIdstring ·optional
Optionaler Idempotenzschlüssel. Derselbe Schlüssel innerhalb von 5 Minuten gibt das zwischengespeicherte Ergebnis zurück.

Rückgabewert

Ein Objekt mit dem neuen Entwurf: {id, platform, content, status: "DRAFT", createdAt}.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":5,
 "params":{"name":"create_post_draft",
           "arguments":{"platform":"twitter",
                        "content":"Hello from MCP"}}}

update_post_draft

Aktualisiert einen bestehenden Entwurf. Mindestens eines von content oder mediaUrls muss angegeben werden.

Argumente

postIdstring ·erforderlich
PostNext-Post-ID aus einem Listenaufruf.
contentstring ·optional
Beitragsinhalt (1-2200 Zeichen).
mediaUrlsarray<string> ·optional
Bis zu 10 Bild- oder Video-URLs.
clientRequestIdstring ·optional
Optionaler Idempotenzschlüssel. Derselbe Schlüssel innerhalb von 5 Minuten gibt das zwischengespeicherte Ergebnis zurück.

Rückgabewert

Ein Objekt mit dem aktualisierten Entwurf: {id, platform, content, mediaUrls, status, updatedAt}.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":6,
 "params":{"name":"update_post_draft",
           "arguments":{"postId":"",
                        "content":"Updated copy"}}}

connect_channel

Generiert eine Einmal-URL, die der Nutzer öffnen kann, um eine neue Plattformverbindung zu autorisieren.

Argumente

platformenum ·erforderlich
Social-Plattform: twitter, instagram, linkedin, threads oder tiktok.

Rückgabewert

Ein Objekt mit authUrl (einmaliger Link, den der Nutzer zur Autorisierung öffnet), expiresAt und platform.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":7,
 "params":{"name":"connect_channel",
           "arguments":{"platform":"linkedin"}}}

schedule_post

Verschiebt einen Entwurf (Status DRAFT) zu einem zukünftigen Zeitpunkt in die BullMQ-Veröffentlichungs-Queue. Idempotent innerhalb von ±60s Drift; lehnt Re-Scheduling-Versuche zu anderer Zeit ohne explizites Cancel ab.

Argumente

postIdstring ·erforderlich
PostNext-Post-ID aus einem Listenaufruf.
scheduledAtstring (ISO 8601) ·erforderlich
ISO-8601-Zeitstempel; darf nicht mehr als 5 Minuten in der Vergangenheit liegen.

Rückgabewert

Ein Objekt mit postId, scheduledAt (ISO), status: SCHEDULED.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":8,
 "params":{"name":"schedule_post",
           "arguments":{"postId":"",
                        "scheduledAt":"2026-05-10T09:00:00Z"}}}

cancel_scheduled_post

Storniert einen geplanten Beitrag und entfernt ihn aus der Queue. Der zugrundeliegende Entwurf bleibt erhalten.

Argumente

postIdstring ·erforderlich
PostNext-Post-ID aus einem Listenaufruf.

Rückgabewert

Ein Objekt mit postId und status: CANCELLED.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":9,
 "params":{"name":"cancel_scheduled_post",
           "arguments":{"postId":""}}}

delete_draft

Löscht einen Entwurf dauerhaft. Lehnt Nicht-DRAFT-Beiträge ab (für SCHEDULED nutze cancel_scheduled_post).

Argumente

postIdstring ·erforderlich
PostNext-Post-ID aus einem Listenaufruf.

Rückgabewert

Ein Objekt mit postId und deleted: true.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":10,
 "params":{"name":"delete_draft",
           "arguments":{"postId":""}}}

get_post

Liefert die vollständige PostGroup für eine postId mit Provider-Inhalten je Plattform + Status + Zeitstempeln.

Argumente

postIdstring ·erforderlich
PostNext-Post-ID aus einem Listenaufruf.

Rückgabewert

Ein Objekt mit postId, status, scheduledAt, createdAt, updatedAt und providers (Map: Plattform → Inhalt).

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":11,
 "params":{"name":"get_post",
           "arguments":{"postId":""}}}

search_posts

Substring-Suche (case-insensitive) über Beitragsinhalte des aktiven Teams. Filter: status, platform, limit (1-100, Standard 20).

Argumente

querystring ·erforderlich
Substring zum Suchen (3-200 Zeichen; Regex-Metazeichen werden escaped).
statusenum ·optional
Optional: DRAFT | SCHEDULED | PUBLISHED | FAILED | CANCELLED.
platformenum ·optional
Social-Plattform: twitter, instagram, linkedin, threads oder tiktok.
limitnumber ·optional · default 20
Maximale Anzahl zurückgegebener Ergebnisse (1-100, Standard 20).

Rückgabewert

Ein Objekt mit posts: [{postId, status, platforms, snippet, scheduledAt, updatedAt}]. Snippet enthält den passenden Kontext mit Auslassungspunkten beidseitig.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":12,
 "params":{"name":"search_posts",
           "arguments":{"query":"launch","limit":10}}}

list_teams

Gibt die Teams zurück, deren Eigentümer oder Admin der angemeldete Nutzer ist, mit Markierung des aktiven Teams.

Argumente

Keine Argumente.

Rückgabewert

Ein Objekt mit currentTeamId und teams: [{teamId, teamName, isCurrent}].

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":13,
 "params":{"name":"list_teams","arguments":{}}}

set_current_team

Wechselt das aktive Team für diesen Bearer-Token. Der Nutzer muss Mitglied sein. Persistent auf dem OAuth-Token-Dokument; In-Session-Mutation macht es sofort für nachfolgende Tools im selben Gespräch wirksam.

Argumente

teamIdstring ·erforderlich
Ziel-teamId aus list_teams. Mitgliedschaft wird serverseitig erneut validiert.

Rückgabewert

Ein Objekt mit teamId, teamName, persisted (true bei OAuth, false bei API-Key) und optionalem note.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":14,
 "params":{"name":"set_current_team",
           "arguments":{"teamId":"team_xxxxx"}}}

get_plan_limits

Liest den aktuellen Subscription-Tier des Nutzers und die Quotas pro Tier (Kanäle, Speicher, KI-Credits, Posten). Auf jedem Plan verfügbar. Nützlich vor mutierenden Tools, um vorherzusagen, ob der Aufruf blockiert wird.

Argumente

Keine Argumente.

Rückgabewert

Ein Objekt mit tier, tierDisplayName, isPaid, isTrial, upgradeUrl, limits (channels/storage/aiCalls/posts jeweils als {limit, current, exceeded} oder {limit, allowed}) und creditsAvailable ({total, subscriptionRemaining, purchasedBalance} oder null).

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":15,
 "params":{"name":"get_plan_limits","arguments":{}}}

get_post_metrics

Holt Engagement-Metriken für einen veröffentlichten Beitrag über alle Plattformen, auf denen er erschienen ist. Twitter und Instagram liefern populierte Metriken (Likes, Retweets/Shares, Kommentare/Antworten, Impressions); LinkedIn, Threads und TikTok liefern nur Veröffentlichungsstatus und URL (Engagement-Erfassung folgt in einem späteren Release). Eine normalisierte totals-Zusammenfassung addiert Likes/Kommentare/Shares/Impressions über alle Plattformen, die Werte gemeldet haben.

Argumente

postId PostNext-Post-ID aus einem Listenaufruf.

Rückgabewert

Ein Objekt mit postId, status, providers: [{platform, publishedPostId, publishedUrl, publishedAt, status, metrics}] und totals: {likes, comments, shares, impressions}. metrics ist ein Objekt mit numerischen Zählern pro Plattform oder null, wenn die Plattform noch keine Engagement-Daten erfasst.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":16,
 "params":{"name":"get_post_metrics",
           "arguments":{"postId":""}}}

get_publish_status

Diagnostiziert einen geplanten Beitrag: Queue-Status, Erfolg/Fehler pro Plattform, Verarbeitungszeit und Worker-Job-ID. Gibt isScheduled=false zurück für Beiträge, die als Entwurf existieren, aber nicht in die Veröffentlichungsqueue verschoben wurden, mit einem Hinweis auf schedule_post.

Argumente

postId PostNext-Post-ID aus einem Listenaufruf.

Rückgabewert

Ein Objekt mit postId, isScheduled, status, scheduledAt, publishedAt, platforms, processingTimeMs, jobId, topLevelError und results: [{platform, success, publishedPostId, publishedAt, error}]. Enthält hint, wenn isScheduled false ist.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":17,
 "params":{"name":"get_publish_status",
           "arguments":{"postId":""}}}

update_brand_profile

Aktualisiert das aktive Markenprofil des Nutzers. Erlaubte Felder: bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize. Alles andere wird stillschweigend verworfen. "Aktiv" wird zuerst als Team-Default aufgelöst, dann das erste eigene aktive Profil des Nutzers.

Argumente

brandVoice Array von Markenstimme-Deskriptoren (z. B. ["professionell", "präzise"]).

Other patchable fields: bio, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize.

Rückgabewert

Ein Objekt mit profileId, name, updated: [Feldnamen, die gepatcht wurden] und den aktuellen Werten von bio, brandVoice, personalityTraits, mainThemes, expertiseAreas, preferredHashtags, audienceSize nach dem Patch.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":18,
 "params":{"name":"update_brand_profile",
           "arguments":{"brandVoice":["professional","concise"]}}}

get_best_time_to_post Bezahlter Plan

Empfiehlt die besten N (Wochentag, Stunde) Slots für den nächsten Beitrag auf einer Plattform, sortiert nach Engagement pro Beitrag der letzten 90 Tage. Twitter und Instagram liefern engagement-gewichtete Scores; LinkedIn, Threads, TikTok sortieren nur nach Beitragshäufigkeit. Zeiten in der angegebenen IANA-Zeitzone (Standard UTC). Bezahlplan erforderlich.

Argumente

platform Social-Plattform: twitter, instagram, linkedin, threads oder tiktok.

timezone IANA-Zeitzonenname (z. B. Europe/Berlin, America/New_York). Standard UTC.

topN Anzahl der Slot-Empfehlungen (1-24, Standard 5).

Rückgabewert

Ein Objekt mit platform, timezone, sampleWindowDays, sampleSize, metricsAvailable und recommendations: [{dayOfWeek (1-7, Mo=1), dayLabel, hour (0-23), score, basedOn: {posts, avgEngagement}}]. Enthält hint für Cold-Start- oder Metriken-fehlen-Fälle.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":19,
 "params":{"name":"get_best_time_to_post",
           "arguments":{"platform":"twitter","timezone":"Europe/Berlin","topN":5}}}

get_channel_analytics

Gesamtleistung eines verbundenen Kanals oder aller Kanäle auf einmal. Liefert Impressionen, Reichweite, Likes, Kommentare und Engagement-Rate für den Zeitraum, die Veränderung gegenüber dem gleich langen Zeitraum davor und die Follower-Entwicklung. Ohne platform kommt die Summe des ganzen Teams. Für einen einzelnen Beitrag get_post_metrics, für die Planung get_best_time_to_post.

Argumente

platform Social-Plattform: twitter, instagram, linkedin, threads oder tiktok.

channelName Welches verbundene Konto, wenn die Plattform mehr als eines hat.

period Zeitraum: 7d, 30d, 90d oder all (Standard 30d).

Rückgabewert

Ein Objekt mit scope, period, totals, vsPrevious, coverage, dataThrough und followers, das trackingSince, current, change und die Zeitreihe enthält.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":34,
 "params":{"name":"get_channel_analytics",
           "arguments":{"platform":"linkedin","period":"30d"}}}

search_tools

Durchsucht den MCP-Tool-Katalog nach Freitext, Kategorie oder Absicht. Liefert Kategorien, requiresScope, einzeilige Beschreibungen und passende Use-Case-Tags. Auf jedem Plan verfügbar (Discovery-Oberfläche).

Argumente

All optional. Call with no arguments to list every available tool.

query Freitextsuche über Tool-Namen, Beschreibungen und Use-Case-Tags.

category Auf eine Kategorie filtern: posts, accounts, analytics, brand, teams, discovery, other.

Rückgabewert

Ein Objekt mit totalTools, matchCount, categories: [string[]] und tools: [{name, category, requiresScope, description, useCases, matchedOn: [name|category|description|use_case]}]. Enthält hint bei keinem Treffer oder keinem Filter.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":20,
 "params":{"name":"search_tools",
           "arguments":{"query":"why did my post fail"}}}

get_plan

Tarif und Abrechnungstermine: Stufe, Verlängerungsdatum, Testende und ob das Abo zum Periodenende gekündigt wird. Für Kontingente und Verbrauch stattdessen get_plan_limits aufrufen.

Argumente

Keine Argumente.

Rückgabewert

Ein Objekt mit tier, tierDisplayName, isPaid, isTrial, gated, subscriptionStatus, renewsAt, trialEndsAt, cancelAtPeriodEnd, currency und upgradeUrl.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":21,
 "params":{"name":"get_plan",
           "arguments":{}}}

upload_asset

Bild- oder Video-Upload direkt als Base64 in die Mediathek. Nur für sehr kleine Dateien zuverlässig, etwa 8 KB oder weniger: größere Daten werden in den Tool-Argumenten stillschweigend abgeschnitten und als defekte Datei gespeichert. Für alles Größere request_asset_upload verwenden.

Argumente

filename Dateiname samt Endung, bis zu 255 Zeichen.

contentType MIME-Typ der Datei, aus der erlaubten Liste für Bilder und Videos.

base64 Die Dateibytes, base64-kodiert. Sehr klein halten und zuerst den Hinweis oben lesen.

Rückgabewert

Ein Objekt mit assetId, url, sizeBytes und mimeType. Die url als mediaUrls an create_post_draft übergeben.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":22,
 "params":{"name":"upload_asset",
           "arguments":{"filename":"logo.png","contentType":"image/png","base64":"iVBORw0KGgo..."}}}

request_asset_upload

Der empfohlene Upload-Weg für Bilder und Videos jeder Größe. Zwei Schritte: dieses Tool aufrufen und eine vorsignierte URL samt fertigem curl-Befehl erhalten, dann die Datei per PUT an diese URL senden. Die Antwort auf das PUT enthält die endgültige Asset-URL.

Argumente

filename Dateiname samt Endung, bis zu 255 Zeichen.

contentType MIME-Typ der Datei, aus der erlaubten Liste für Bilder und Videos.

sizeBytes Genaue Dateigröße in Bytes, wird zum Signieren des Uploads verwendet.

Rückgabewert

Ein Objekt mit uploadId, uploadUrl, uploadToken, expiresInSeconds und instructions mit dem genauen PUT-Befehl.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":23,
 "params":{"name":"request_asset_upload",
           "arguments":{"filename":"clip.mp4","contentType":"video/mp4","sizeBytes":4194304}}}

get_latest_blog_post

Ob das Team einen WordPress-Blog verbunden hat, plus ein Auszug des neuesten Beitrags. Nur lesend und ohne Credit-Kosten. Vor create_blog_plan oder test_blog_connection aufrufen, um zu sehen, was bereits eingerichtet ist.

Argumente

Keine Argumente.

Rückgabewert

Ein Objekt mit blogConnected, einer Zusammenfassung der Integration ohne Zugangsdaten und latestPost mit Titel, Auszug, Status und veröffentlichter URL.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":24,
 "params":{"name":"get_latest_blog_post",
           "arguments":{}}}

list_blog_plans

Listet die Blogpläne des Teams auf, neueste zuerst, mit Status, Themenanzahl je Status, reservierten Credits und einem Link ins Dashboard. Nur lesend und ohne Credit-Kosten.

Argumente

limit Maximale Anzahl zurückgegebener Pläne (1-50, Standard 20).

status Nach Status filtern: generating, active, paused, completed, cancelled oder failed.

Rückgabewert

Ein Objekt mit plans und total. Jeder Plan enthält id, Status, Themenanzahl und den Dashboard-Link.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":25,
 "params":{"name":"list_blog_plans",
           "arguments":{"status":"active","limit":10}}}

create_blog_plan Bezahlter Plan

Erstellt einen Blog-Contentplan für ein Markenprofil. Die Themen werden asynchron erzeugt, der Plan kommt also sofort im Status generating zurück: den Fortschritt mit list_blog_plans abfragen. In den Tarifen Business und Teams werden die Beiträge zusätzlich erzeugt und auf einem verbundenen WordPress-Blog veröffentlicht.

Argumente

startDate Erster Tag, den der Plan abdeckt, als YYYY-MM-DD.

planDays Wie viele Tage der Plan abdeckt (1-30, Standard 7).

brandProfileId Markenprofil, für das geplant wird. Standard ist das aktive Profil des Teams.

integrationId Welcher verbundene Blog verwendet wird, wenn das Team mehrere hat.

autoPublish Die erzeugten Beiträge automatisch auf dem verbundenen Blog veröffentlichen (Business und Teams).

Rückgabewert

Ein Objekt mit planId, status, startDate, planDays, brandProfileId, integrationId, topicCount und dashboardUrl.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":26,
 "params":{"name":"create_blog_plan",
           "arguments":{"startDate":"2026-10-01","planDays":14,"autoPublish":true}}}

test_blog_connection Bezahlter Plan

Prüft, ob der verbundene WordPress-Blog antwortet und sein Token noch gültig ist, und hält das Ergebnis an der Integration fest. Liefert die Plugin-Version und dessen Fähigkeiten zurück.

Argumente

integrationId Welcher verbundene Blog verwendet wird, wenn das Team mehrere hat.

Rückgabewert

Ein Objekt mit success, message, version, capabilities, integrationId und dem aktualisierten status.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":27,
 "params":{"name":"test_blog_connection",
           "arguments":{}}}

list_mini_sites

Listet die Bio-Seiten des ausgewählten Teams mit öffentlicher URL, Veröffentlichungsstatus und Einrichtungsfortschritt. Hier anfangen: jedes andere Bio-Seiten-Tool nimmt die siteId aus dieser Antwort und kann sie weglassen, wenn das Team genau eine Seite hat.

Argumente

Keine Argumente.

Rückgabewert

Ein Objekt mit sites, die jeweils id, slug, name, published, url, views und den Einrichtungsfortschritt enthalten.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":28,
 "params":{"name":"list_mini_sites",
           "arguments":{}}}

get_mini_site

Liest eine Bio-Seite vollständig: Profilkopf, Social-Icons, alle Inhaltsblöcke, SEO-Metadaten, Design und Auto-Pin-Einstellungen. Lange Texte werden auf eine Vorschau von 300 Zeichen gekürzt, Zugangsdaten werden nie zurückgegeben.

Argumente

siteId Auf welche Bio-Seite sich der Aufruf bezieht. Weglassen, wenn das Team genau eine hat.

Rückgabewert

Ein Objekt mit id, slug, published, url, header, socials, meta, theme, autoPin, campaign und dem Array blocks.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":29,
 "params":{"name":"get_mini_site",
           "arguments":{}}}

get_mini_site_analytics

Wie eine Bio-Seite abschneidet: Aufrufe, Klicks, beste Links, Herkunft, Gerät und Land der Besucher sowie Zugriffe von KI-Crawlern, dazu welche veröffentlichten Beiträge Klicks gebracht haben. Alle Werte außer den Attributionszeilen sind Gesamtzähler und nicht auf den Zeitraum bezogen: das beim Berichten dazusagen.

Argumente

siteId Auf welche Bio-Seite sich der Aufruf bezieht. Weglassen, wenn das Team genau eine hat.

attributionDays Zeitfenster in Tagen für die Zuordnung von Beitrag zu Klick (1-90, Standard 30).

Rückgabewert

Ein Objekt mit viewsAllTime, clicksAllTime, topLinks, bySource, byDevice, byCountry, ai, attribution und attributionWindowDays.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":30,
 "params":{"name":"get_mini_site_analytics",
           "arguments":{"attributionDays":30}}}

add_mini_site_block

Fügt einer Bio-Seite einen Block hinzu: link, featured, product, event, presave, podcast-Folge, booking, Öffnungszeiten, header, text, image oder gallery. Die Pflichtfelder unterscheiden sich je Typ. Das ändert eine öffentlich sichtbare Seite sofort.

Argumente

siteId Auf welche Bio-Seite sich der Aufruf bezieht. Weglassen, wenn das Team genau eine hat.

type Typ des Blocks, der hinzugefügt wird, etwa link, product, event, hours oder gallery.

... Dazu die Felder des jeweiligen Blocktyps, etwa url, title, price oder startDate.

Rückgabewert

Ein Objekt mit dem gespeicherten block, dem neuen blockCount und alreadyExisted, falls derselbe Block bereits vorhanden war.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":31,
 "params":{"name":"add_mini_site_block",
           "arguments":{"type":"link","url":"https://example.com","title":"New single"}}}

update_mini_site_block

Ändert einen vorhandenen Block: Titel oder URL eines Links, den Preis eines Produkts, ein Veranstaltungsdatum, Öffnungszeiten oder die Reihenfolge. Nur die übergebenen Felder ändern sich, der Blocktyp lässt sich nicht ändern. Die Antwort liefert den Block so, wie er gespeichert wurde, ein abgelehnter Wert ist damit sichtbar.

Argumente

siteId Auf welche Bio-Seite sich der Aufruf bezieht. Weglassen, wenn das Team genau eine hat.

blockId Id des Blocks, wie von get_mini_site zurückgegeben.

... Dazu die Felder des jeweiligen Blocktyps, etwa url, title, price oder startDate.

Rückgabewert

Ein Objekt mit dem gespeicherten block, der Liste der geänderten Felder und den ignorierten Feldern.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":32,
 "params":{"name":"update_mini_site_block",
           "arguments":{"blockId":"blk_7f3a","title":"Updated title"}}}

remove_mini_site_block

Entfernt einen Block von einer Bio-Seite anhand seiner blockId, etwa einen vergangenen Tourtermin oder einen ausgelaufenen Produktlink. Die id vorher mit get_mini_site holen. Das ändert eine öffentlich sichtbare Seite sofort.

Argumente

siteId Auf welche Bio-Seite sich der Aufruf bezieht. Weglassen, wenn das Team genau eine hat.

blockId Id des Blocks, wie von get_mini_site zurückgegeben.

Rückgabewert

Ein Objekt mit removed, der blockId und der Anzahl verbleibender Blöcke.

Beispiel

{"jsonrpc":"2.0","method":"tools/call","id":33,
 "params":{"name":"remove_mini_site_block",
           "arguments":{"blockId":"blk_7f3a"}}}

MCP-Ressourcen

Ressourcen sind nur lesbarer Kontext, den der Client per MCP-resources/read-Methode abrufen kann. Claude lädt sie zu Beginn jedes Gesprächs, sodass Account-/Team-/Brand-Kontext vorhanden ist, ohne dass du jedes Mal neu erklären musst.

postnext://account/summary

Konto-E-Mail und Handle (damit Claude bestätigen kann, mit welchem Konto es arbeitet), Plan, KI-Credits genutzt / Limit, Entwurfsanzahl, geplante Beiträge, verbundene Kanäle. Zählungen jeweils auf 100 begrenzt für schnelles Laden.

postnext://channels/connected

Gleiche Form wie das Ergebnis von list_connected_accounts; als Ressource exponiert, sodass Claude es zu Gesprächsbeginn einmalig lädt (kein Tool-Aufruf-Roundtrip).

postnext://brand-profiles/active

Das aktive Markenprofil des Nutzers (Team-Standard, Fallback auf erstes eigenes Profil). Liefert nur LLM-relevante Felder: bio, expertiseAreas, personalityTraits, brandVoice, mainThemes, audienceSize, preferredHashtags.

postnext://teams/current

Aktuelle Team-Metadaten (teamId, teamName) plus totalTeamsAvailable. Kombiniere mit list_teams + set_current_team zum Wechseln.

Benannte Workflows

Slash-Menü-Shortcuts, die mehrere Tools verketten. Wähle einen aus und lass deinen KI-Assistenten mehrere Schritte durchlaufen, mit Bestätigung vor jeder Änderung.

/weekly-plan

Liest Markenprofil, verbundene Kanäle und Queue und schlägt 5-10 Entwürfe verteilt von Montag bis Freitag vor.

/draft-thread

Schreibt einen Twitter- oder Threads-Thread aus 5-10 Beiträgen zu einem Thema oder einer URL, in deiner Markenstimme.

/audit-queue

Prüft die geplanten Beiträge der nächsten 7 Tage und meldet Duplikate, Plattform-Überlastung und Lücken.

/channel-sweep

Vergleicht verbundene Kanäle mit der unterstützten Liste und schlägt vor, welche zu verbinden oder aufzufrischen sind.

Discovery- und OAuth-Endpoints

Standardkonforme Metadaten, damit jeder MCP-Client sich selbst konfigurieren kann.

  • GET /.well-known/oauth-protected-resource/api — RFC 9728
  • GET /.well-known/oauth-authorization-server — RFC 8414
  • GET /oauth/.well-known/openid-configuration — OIDC
  • POST /oauth/reg — Dynamic Client Registration (RFC 7591)
  • GET /oauth/auth — Authorize (PKCE-S256 required)
  • POST /oauth/token — Token exchange

Open Source

Sofort einsetzbare Rezepte und eine entwicklerfreundliche Referenz finden Sie in unserem öffentlichen Docs-Repo. MIT-lizenziert; Pull Requests willkommen. github.com/postnextio/postnext-mcp

Steuere deine Social-Kanäle aus jedem KI-Assistenten

Plane, entwirf, terminiere und prüfe Beiträge auf 7 Plattformen im Gespräch mit Claude, ChatGPT oder Cursor. Eine sichere Verbindung, jedes PostNext-Feature.

×