Docs

Tool-Referenz

Jedes Tool des FeedHorizon-MCP-Servers mit seinen Parametern und der Berechtigung, die es braucht, aus dem Code des Servers erzeugt.

Assistenten finden diese Tools von selbst; du musst sie in deinen Prompts nicht nennen. Diese Seite hilft dir, wenn du prüfen willst, was ein Assistent tun kann, einen API-Key mit eingeschränkten Scopes einrichtest oder einen Tool-Aufruf debuggst. Die Tabelle wird aus dem Code erzeugt und ist deshalb auf Englisch.

Tools mit asks first wirken öffentlich oder endgültig (veröffentlichen, erneut versuchen, löschen). Sie sind als destruktiv markiert, deshalb fragen Clients wie Claude dich, bevor sie sie ausführen.

ToolWhat it doesNeeds scope
get_contextGet contextany key
get_platform_rulesGet platform rulesany key
search_docsSearch docsany key
list_postsList postsposts:read
get_postGet postposts:read
validate_postValidate postposts:read
get_queueGet queueprofiles:read
list_pinterest_boardsList Pinterest boardsaccounts:read
get_tiktok_creatorGet TikTok creator settingsaccounts:read
create_postCreate postposts:write
update_postUpdate postposts:write
publish_post_nowPublish post nowposts:write
cancel_postCancel scheduled postposts:write
retry_postRetry failed postposts:write
duplicate_postDuplicate postposts:write
delete_postDelete postposts:write
set_queue_slotsSet queue slotsprofiles:write
import_media_from_urlImport media from URLposts:write
create_upload_linkCreate upload linkposts:write
create_connect_linkCreate connect linkplatform_invites:write

get_context

Start here. Returns the organization, permissions, every profile with its time zone, current local time, queue state and connected accounts (ids, platform, status), and which platforms can publish. Call once per conversation before working with posts.

Reads only. Scope: any valid key.

No parameters.

get_platform_rules

Text length, media count and accepted file types per platform, plus rules such as "Instagram needs media". Use it to write text that fits before calling validate_post. Leave platforms empty for all.

Reads only. Scope: any valid key.

ParameterTypeRequiredDescription
platforms("twitter" | "linkedin" | "instagram" | "facebook" | "tiktok" | "youtube" | "threads" | "bluesky" | "pinterest")[]NoOnly these platforms

search_docs

Searches the FeedHorizon documentation (guides and API reference) by keywords and returns the best pages with an excerpt. Set fullText to get the whole text of the top page. Use it when unsure how something works.

Reads only. Scope: any valid key.

ParameterTypeRequiredDescription
querystringYesKeywords, e.g. "queue reshuffle" or "instagram video"
limitintegerNoDefault: 5
fullTextbooleanNoInclude the full text of the best page. Default: false

list_posts

Lists posts with a short preview, newest first. With from or to it lists a calendar range by publish time, oldest first. Filter by profile, status or platform. Pass nextCursor back as cursor for more. Use get_post for the full text.

Reads only. Scope: posts:read.

ParameterTypeRequiredDescription
profileIdstringNoprofile id (prof_…)
status"draft" | "scheduled" | "publishing" | "published" | "partially_failed" | "failed"No
platform"twitter" | "linkedin" | "instagram" | "facebook" | "tiktok" | "youtube" | "threads" | "bluesky" | "pinterest"No
fromstringNoRange start, ISO with offset
tostringNoRange end (exclusive)
limitintegerNoDefault: 20
cursorstringNonextCursor of the previous call

get_post

The full post: text, own text per account, media, schedule in UTC and local time, and per account the status, link to the published post or the error.

Reads only. Scope: posts:read.

ParameterTypeRequiredDescription
postIdstringYespost id (post_…)

validate_post

Checks a post against every platform (text length, media, accounts, time, queue) without saving it. Returns all errors and warnings at once. Times: when=at with date + time in the profile time zone, or at as ISO. Fix every error, then create the post.

Reads only. Scope: posts:read.

ParameterTypeRequiredDescription
profileIdstringYesprofile id (prof_…)
contentstringNoPost text, used for every account without own text
targetsobject[]YesAccounts to publish to (ids from get_context), each with optional own text
mediaIdsstring[]NoUploaded files, in display order
when"draft" | "at" | "queue"Nodraft = no time; at = fixed time (give at, or date + time); queue = the profile's next free queue slot. Default: "draft"
atstringNoExact time with offset, e.g. 2026-11-05T09:30:00+01:00
datestringNoLocal date YYYY-MM-DD in the profile's time zone (with time)
timestringNoLocal time HH:MM in the profile's time zone (with date)

get_queue

A profile's posting queue: weekly slots in its time zone, whether it is on, and the next slots with the post that holds each (postId null = free). when=queue in validate_post takes the first free slot.

Reads only. Scope: profiles:read.

ParameterTypeRequiredDescription
profileIdstringYesprofile id (prof_…)
upcomingintegerNoHow many upcoming slots to list. Default: 10

list_pinterest_boards

The boards of a connected Pinterest account. Pass a board id as options.pinterest.boardId on that account's target in create_post or update_post.

Reads only. Scope: accounts:read.

ParameterTypeRequiredDescription
accountIdstringYesaccount id (acc_…)

get_tiktok_creator

Before every TikTok post: the creator's name (tell the user which account it goes to), the privacy levels they may choose and which interactions are switched off. Ask the user for the privacy level and the comment, duet and stitch settings; never pick them yourself.

Reads only. Scope: accounts:read.

ParameterTypeRequiredDescription
accountIdstringYesaccount id (acc_…)

create_post

Saves a post as draft, schedules it (when=at with date + time in the profile time zone) or puts it in the queue (when=queue). Runs the same checks as validate_post and fails with all problems at once. To publish right away, create a draft and call publish_post_now.

Changes data. Scope: posts:write.

ParameterTypeRequiredDescription
profileIdstringYesprofile id (prof_…)
contentstringNoPost text, used for every account without own text
targetsobject[]YesAccounts to publish to (ids from get_context), each with optional own text
mediaIdsstring[]NoUploaded files, in display order
when"draft" | "at" | "queue"Nodraft = no time; at = fixed time (give at, or date + time); queue = the profile's next free queue slot. Default: "draft"
atstringNoExact time with offset, e.g. 2026-11-05T09:30:00+01:00
datestringNoLocal date YYYY-MM-DD in the profile's time zone (with time)
timestringNoLocal time HH:MM in the profile's time zone (with date)

update_post

Changes a post that has not started publishing: text, accounts (targets replaces all), media (mediaIds replaces all, [] removes) or time (when=draft unschedules, at, or queue). Leave a field out to keep it.

Changes data. Scope: posts:write.

ParameterTypeRequiredDescription
postIdstringYespost id (post_…)
contentstringNoNew post text; null clears it
targetsobject[]NoAccounts to publish to (ids from get_context), each with optional own text
mediaIdsstring[]No
when"draft" | "at" | "queue"NoLeave out to keep the current time. draft = no time; at = fixed time (give at, or date + time); queue = the profile's next free queue slot
atstringNoExact time with offset, e.g. 2026-11-05T09:30:00+01:00
datestringNoLocal date YYYY-MM-DD in the profile's time zone (with time)
timestringNoLocal time HH:MM in the profile's time zone (with date)

publish_post_now

Publishes a draft or scheduled post immediately to all its accounts. This is public and cannot be undone, so confirm with the user first. Returns at once with status scheduled; check the outcome with get_post after a few seconds.

Changes data, asks first. Scope: posts:write.

ParameterTypeRequiredDescription
postIdstringYespost id (post_…)

cancel_post

Takes a scheduled or queued post off the schedule. It stays as a draft and can be scheduled again with update_post.

Changes data. Scope: posts:write.

ParameterTypeRequiredDescription
postIdstringYespost id (post_…)

retry_post

Publishes the failed accounts of a post again, right away. Read the error in get_post first: a disconnected account fails again until the user reconnects it. Public, so confirm with the user.

Changes data, asks first. Scope: posts:write.

ParameterTypeRequiredDescription
postIdstringYespost id (post_…)

duplicate_post

Copies a post (also a published one) as a new draft with the same text, own texts, accounts and media. Then change or schedule the copy with update_post.

Changes data. Scope: posts:write.

ParameterTypeRequiredDescription
postIdstringYespost id (post_…)

delete_post

Deletes a post in FeedHorizon for good. Posts already live on a platform stay there. Confirm with the user first; to only stop a scheduled post, use cancel_post.

Changes data, asks first. Scope: posts:write.

ParameterTypeRequiredDescription
postIdstringYespost id (post_…)

set_queue_slots

Replaces all weekly queue slots of a profile, e.g. Mon-Fri 09:00. Times are local in the profile's time zone (or the new timezone you pass). reshuffle moves posts already waiting in the queue to the new slots. slots: [] clears the queue.

Changes data. Scope: profiles:write.

ParameterTypeRequiredDescription
profileIdstringYesprofile id (prof_…)
slotsobject[]Yes
timezonestringNoChanges the profile's time zone
enabledbooleanNoTurn the queue on or off
reshufflebooleanNoDefault: false

import_media_from_url

Downloads an image, video or PDF from a public https URL (up to 100 MB) and stores it. Returns the media id to pass in mediaIds. Use the direct file URL, not a web page that shows it.

Changes data. Scope: posts:write.

ParameterTypeRequiredDescription
urlstringYesPublic https link to the file itself
filenamestringNo

For a local file you cannot share by URL: returns a media id and a link valid for two hours. The user or a script PUTs the raw bytes to uploadUrl with the given Content-Type; after that the media id works in mediaIds. Up to 5 GB.

Changes data. Scope: posts:write.

ParameterTypeRequiredDescription
filenamestringYes
mimeType"image/jpeg" | "image/png" | "image/gif" | "image/webp" | "video/mp4" | "video/quicktime" | "video/webm" | "application/pdf"Yes
sizeBytesintegerYes

A link to connect a social account to a profile, for the user or their client to open in a browser (valid 7 days, usable once). Accounts cannot be connected without that sign-in on the platform.

Changes data. Scope: platform_invites:write.

ParameterTypeRequiredDescription
profileIdstringYesprofile id (prof_…)
platform"twitter" | "linkedin" | "instagram" | "facebook" | "tiktok" | "youtube" | "threads" | "bluesky" | "pinterest"Yes