flayr
by flayr.social in News & content
Create, schedule and publish social posts to 13 platforms for your brands.
https://flayr.social/api/mcp- Tools
- 129
- open to any client
- Uptime
- 100%
- last 30 days
- Response time
- 1.4 s
- 3.5 s slowest 5%
- Last check
- Passed
- 2 h ago, next in 4 h
Reliability
Status and outage history · Atom feed · Watch with other listings
How to connect
Add it to any MCP client that supports remote servers.
{
"mcpServers": {
"flayr": {
"type": "http",
"url": "https://flayr.social/api/mcp"
}
}
}129 tools
- media_qa_get
[read-only] Reads the cached video/audio QA report, timestamped findings and approval/booking gate. Missing or failed QA blocks. API keys cannot override. (Wraps GET /api/v2/content/{id}/qa.)
- media_qa_rerun
[writes flayr data · `write` scope] Queues a free media QA run using the existing per-minute cap. Poll media_qa_get. Does not approve, book or override. (Wraps POST /api/v2/content/{id}/qa/rerun.)
- whoami
[read-only] Returns who this connection (an OAuth sign-in or an API key) belongs to: userId, the account's current plan tier, and brandId/brandName when the connection is bound to one brand (null = account-wide). Call this first to learn what the connection can reach. (Wraps GET…
- list_brands
[read-only] Lists the brands this connection can file content into and publish through. Use an `id` as `brandId` on create_content, publish, queues and analytics tools; "personal" means the account owner's personal accounts. A connection bound to one brand sees only that brand…
- brand_profile_get
[read-only] A brand's profile (website, companyName, tagline, industry, audience, values, pillars, hashtag sets), its default voice, colors and fonts. `brandId` comes from list_brands; a brand-bound connection may omit it. (Wraps GET /api/v2/brand/intelligence.)
- brand_profile_update
[writes flayr data · `write` scope] Fills in a brand's profile — e.g. `{ brandId, profile: { website: "https://…" } }`. Changes only the fields you send; the voice, colors and fonts stay as they are unless you pass them. Use it to clear list_brands setup items such as…
- list_connected_accounts
[read-only] The social accounts a brand can post to — the same set publish would use for that `brandId`: platform, handle, display name, health (healthy, needs_reauth, disconnected) and whether flayr can post there right now (`postable`; Reddit is paused because Reddit closed…
- account_refresh
[writes flayr data · `write` scope] Re-reads a connected account's handle, display name and avatar from the network (use after the user renames the account) and returns the stored values. Changes nothing else: no connect, disconnect or post. If the status is not `updated`, tell…
- list_youtube_playlists
[read-only] Playlists of the YouTube channel(s) a brand publishes to. Use a playlist id as `youtube.playlistId` on create_content or publish. (Wraps GET /api/v2/youtube/playlists.)
- list_pinterest_boards
[read-only] Boards of the Pinterest account(s) a brand publishes to. Use a board id as `pinterest.boardId` on publish. A board is required; the one you pick is remembered as the brand's default for next time, and a publish that uses the default says so (defaultBoardApplied)…
- suggest_tags
[read-only] Hashtag and @mention suggestions for each platform, from the brand's own config: hashtags from its brand profile's hashtag sets (within each platform's limit, skipping ones already in `text`), mentions from its mention contacts written the way each network receives…
- upload_media
[writes flayr data · `write` scope] Step 1 of attaching a LOCAL file (video or image) to a draft. Returns a single-use, short-lived `uploadUrl`. Step 2: POST the raw file bytes to it with the file's Content-Type, e.g. `curl -X POST -H "Content-Type: video/mp4" --data-binary…
- list_content
[read-only] Lists content items (drafts), newest first. Each carries `postState` ("posted" / "scheduled" / null) and `posts[]` (up to 5): where it went out, per platform, with status, live URL and failure reason. (Wraps GET /api/v2/content.)
- get_content
[read-only] One content item plus its live posting status: `postState` and `posts[]` (up to 20, newest first) with each post's status (scheduled · publishing · published · partial · failed · review_held · held), scheduledAt, and per-platform status, live URL and error. The…
- create_content
[writes flayr data · `write` scope] Creates a DRAFT content item. Nothing is posted. Give `text` plus optional media (`videoUrl` / `imageUrl`, or `videoStorageId` / `imageStorageId` from upload_media), target `platforms`, `brandId` (from list_brands; omitted → the brand last…
- edit_post_labels
[writes flayr data · `write` scope] Sets internal post labels and per-platform/account instanceLabels. Omitted sets stay unchanged; [] clears a set; labelMode set replaces both sets, add appends atomically. Use get_post to list both. Works after booking and publishing, and never…
- update_content
[writes flayr data · `write` scope] Edits a draft in place; only the fields you pass change. Any media field replaces the draft's media as a set (keeps the id, so queue items still point at it). Refused (409) for archived or already-published items, and a media swap is refused…
- labels_bulk_edit
[writes flayr data · `write` scope] Adds and/or removes labels on up to 100 content items in one call: each item becomes (labels − remove) + add. Published items are fine (labels are metadata). Each item succeeds or fails on its own; read `results`. Removing…
- delete_content
[DESTRUCTIVE] DESTRUCTIVE: permanently deletes a content item from the library. Posts already live on a platform are not removed. Needs the `write` scope. Ask the user before calling. (Wraps DELETE /api/v2/content/{id}.)
- combine_clips
[writes flayr data · `write` scope] Extends a video draft (`id`) with more clips and image cards into ONE finished video, rendered by flayr and saved as a NEW linked draft (same brand, caption copied, credits merged, labelled variant:combined). Nothing is posted and the original…
- get_job_status
[read-only] Status of an async job (combine_clips, render_motion_ad, or an API video generation): pending, processing, completed or failed. For a combine or a motion ad, `resultContentId` is the new draft once completed; a failed combine is refunded automatically. Poll every…
- render_motion_ad
[writes flayr data · `write` scope] Turns one Library image (the card) into a 6-15 s motion ad: hook (push-in on the card), up to 3 body beats (pans with the text), then a CTA end card in the brand color with the CTA and the link host. 9:16 unless `aspect` is 1:1 or 16:9. The…
- plan_teardown
[read-only] Teardown Studio: send a 3D model (`model`, base64 STL, 3MF or GLB, up to 3 MB inline) and get its parts list, a default teardown/1 plan (hold, explode, label the biggest parts, slow-motion, reassemble, reveal, brand end card; 16:9 and 9:16) built from part count and…
- ad_cut_lint
[writes flayr data · `write` scope] Checks an ad's cut against the ad-cut rules: too many joins (warning), joins only at a rest point, no cut inside a caption or its fade, one caption layer, no audio dip at a join, exactly one ending, and the network's length / aspect / ad-text…
- publish
[PUBLISHES to social accounts · `publish` scope] PUBLISHES TO REAL SOCIAL ACCOUNTS. Posts now, or at `scheduledAt` (ISO-8601, future). Prefer `contentId` (a draft from create_content: its text and media become the post) over inline `content`. The post goes out through the target…
- get_post
[read-only] A post (`id` = convexPostId from publish, or posts[].id from get_content): status, slot, platforms, its internal labels and per-platform/account instanceLabels, and while it is scheduled the first comment each platform will publish and whether it can be changed now…
- update_scheduled_post
[PUBLISHES to social accounts · `publish` scope] CHANGES WHAT A SCHEDULED POST WILL PUBLISH on real accounts, keeping its slot, accounts, options, labels and draft. `firstComment` sets per-platform first comments (linkedin, facebook, instagram, threads, youtube; null removes…
- reschedule_post
[PUBLISHES to social accounts · `publish` scope] MOVES A SCHEDULED POST to `scheduledAt` (ISO 8601 with a timezone, e.g. "2026-11-19T15:00:00Z"; more than 5 minutes ahead). The booking keeps its id, caption, media, accounts and options; its posting-queue slot follows. Returns {…
- cancel_scheduled_post
[PUBLISHES to social accounts · `publish` scope] Takes a SCHEDULED post off the platform schedule and marks it cancelled (the draft stays, so it can be published again). Safe to repeat. Refused within 5 minutes of the slot, and when the platform will not remove it (some YouTube…
- list_reviews
[read-only] Scheduled posts waiting for (or given) a human sign-off, oldest slot first. `canApprove` tells whether THIS connection may approve each one. (Wraps GET /api/v2/reviews.)
- decide_review
[PUBLISHES to social accounts · `publish` scope] decision "approve" sends a held post to the platform for its slot (GOES LIVE) — needs the explicit `review` scope (admin does not include it) and never works on a post the same connection created. decision "hold" takes a scheduled…
- move_reviews
[writes flayr data · `write` scope] Moves one or many posts held for review ("move to Tuesday 10:00", "+1 day"). Moving never approves and nothing goes live. A post already booked at the platform answers vendor_booked; use update_scheduled_post. Needs `review` or `publish`…
- move_approvals
[writes flayr data · `write` scope] Moves the planned time of one or many items waiting for approval. Moving never approves and books nothing. Needs the explicit `approve` scope (admin does not include it). Agency plan. (Wraps POST /api/v2/approvals/move.)
- list_approvals
[read-only] Content held for approval that waits on the account owner's decision, newest first: posts filed with publish `requiresApproval: true`, drafts submitted for review, and workflow runs parked at an approval gate. `kind` is "manual" or "workflow". With status "rejected"…
- decide_approval
[PUBLISHES to social accounts · `publish` scope] Same rules as the dashboard: the assigned approver, or an owner/admin of the org, may decide. On a "workflow" approval, decision "approve" resumes the parked run, whose next steps may publish (GOES LIVE); "reject" cancels it. On a…
- list_approval_groups
[read-only] The same held content as list_approvals, grouped by piece: the variants of one draft (or sharing a `group:<id>` label), with the axes they vary on (theme, hook, audio …), a tally (approved / redo / dropped / open) and each variant's state and slot time. `status` open…
- decide_approval_group
[PUBLISHES to social accounts · `publish` scope] Decides several variants of a group from list_approval_groups at once, each as decide_approval would: `members` "all" (open variants), an array of approvalIds, or {axis: value} (e.g. {"audio":"voice"}). "approve" marks them…
- list_queues
[read-only] Posting (drip) queues of one brand. A queue posts one item every cadenceHours at timeOfDay in its timezone, keeping `lookahead` items booked at the platform. (Wraps GET /api/v2/queues.)
- get_queue
[read-only] A queue and its items in order, with each item's state (queued · publishing · scheduled · posted · failed · skipped), booked or projected slot, and attribution status. (Wraps GET /api/v2/queues/{id}.)
- create_queue
[PUBLISHES to social accounts · `publish` scope] Creates a posting queue. Once items are added it BOOKS REAL POSTS on the given platforms on its cadence (default daily 19:00 America/Chicago, 2 booked ahead). Use `startsAt` to hold everything until a date. Needs the `publish`…
Security scan
No findings
We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time |
|---|---|---|---|
| 2 h ago | Passed | 200 | 1.5 s |
| 14 h ago | Passed | 200 | 1.3 s |
| 25 h ago | Passed | 200 | 3.9 s |
| 37 h ago | Passed | 200 | 966 ms |
| 2 days ago | Passed | 200 | 1.6 s |
Show 10 older checks
| 3 days ago | Passed | 200 | 769 ms |
| 3 days ago | Passed | 200 | 1.5 s |
| 3 days ago | Passed | 200 | 1.4 s |
| 4 days ago | Passed | 200 | 3.2 s |
| 5 days ago | Passed | 200 | 1.4 s |
| 5 days ago | Passed | 200 | 1.2 s |
| 6 days ago | Passed | 200 | 639 ms |
| 6 days ago | Passed | 200 | 457 ms |
| 7 days ago | Passed | 200 | 1.4 s |
| 8 days ago | Passed | 200 | 1.1 s |