NestDaddy

flayr

social.flayr/flayr · v1.2.0

Create, schedule and publish social posts to 13 platforms for your brands.

Connect Remote server

Terminal
claude mcp add --transport http flayr https://flayr.social/api/mcp
~/.cursor/mcp.json
{
  "mcpServers": {
    "flayr": {
      "url": "https://flayr.social/api/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "flayr": {
      "type": "http",
      "url": "https://flayr.social/api/mcp"
    }
  }
}
Claude Desktop
Settings > Connectors > Add custom connector
URL: https://flayr.social/api/mcp

Tools 80 found in our last check

  • 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 hasWebsite…

  • 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 it…

  • 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). (Wr…

  • 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 t…

  • upload_media

    [writes flayr data · `write` scope] Step 1 of attaching a LOCAL file (video, image or audio) 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-bina…

  • list_content

    [read-only] Lists content items (drafts), newest first, one page at a time: each item is a summary (id, title, type, durationMs, createdAt, postState "posted" / "scheduled" / null). Page with `limit` and `cursor` (the previous page's nextCursor). Call get_content with an id for…

  • 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 item'…

  • 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 act…

  • 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 o…

  • 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 `source:ai-generated…

  • archive_content

    [writes flayr data · `write` scope] Soft-archives an uncommitted draft or failed generation. Keeps its content and media; Restore is available in the Library Archive view. Repeating the call is safe. Refused (409) for ready, staged, scheduled or published content, or any posting…

  • 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…

  • list_studio_cuts

    [read-only] Saved versions (drafts and final cuts) of a Long-form Studio project (`id`), newest first, and THE final cut: the one campaigns and approvals use, with its rendered draft (`contentId`). Pass `diff` (a cut id, or empty for the board as it stands) to also get what it c…

  • save_studio_cut

    [writes flayr data · `write` scope] `action: "save_draft"` stores the edit as it stands as a named version; free, nothing renders. `action: "save_final"` with `quoteId` (an accepted render quote: plan the project, then quote step `render`, estimate first) stores it and renders i…

  • 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 10-…

  • 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 te…

  • list_brand_segments

    [read-only] A brand's segments: one per confirmed offer that names an audience, with its pains, outcomes, proof and the brand website (the default CTA link), ranked shops/commerce first and local services second (each has `tier` and `rank`). Read-only, free. Pass the segment `id…

  • generate_segment_ad

    [writes flayr data · `write` scope] Builds a segment's ad script as beats (hook, persona, offer, proof, CTA) from the owner's own words, or checks the `beats` you edited. Every beat is claims-checked and any figure must come from the segment's offer, outcomes or proof (nothing i…

  • 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…

  • video_studio_auto_run

    [writes flayr data · `write` scope] Long-form Video Studio project `id`: with no `action` it runs the brand's enabled auto steps (dead-air trims at sentence boundaries, retake picks, dissolves, room tone, loudness, presets) and writes suggestion items for the timeline. Suggestio…

  • video_studio_auto_suggestions

    [read-only] The auto-edit suggestions for Video Studio project `id` (step, kind, status, where on the timeline, a plain summary, the payload), the latest run (which steps ran or were skipped and why) and the brand's auto profile. Free. (Wraps GET /api/v2/video-studio/projects/{i…

  • 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; X/…

  • 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`. Agen…

  • 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 approv…

  • 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` sco…

  • update_queue

    [PUBLISHES to social accounts · `publish` scope] `status: "paused"` stops new bookings (already-booked posts stay booked); "active" resumes. Other fields (platforms, cadenceHours, timeOfDay, lookahead, startsAt, name) apply from the next booking. Needs the `publish` scope (or ad…

  • delete_queue

    [DESTRUCTIVE] DESTRUCTIVE: deletes the queue (its drafts stay in the library). With posts booked at the platform it is refused (409) unless `unschedule: true`, which first deletes those platform posts. Needs the `publish` scope (or admin) on the Agency plan or higher. Ask the us…

  • add_queue_items

    [PUBLISHES to social accounts · `publish` scope] Appends drafts (content ids) to the end of a queue — they will be BOOKED AND POSTED on the queue's schedule. Use `contentIds`, or `items` for a per-item YouTube title or platforms. Drafts of another brand, duplicates, archived dra…

  • queue_item_action

    [PUBLISHES to social accounts · `publish` scope] `action`: "skip" passes over a queued item; "retry" puts a failed/skipped item back in line; "unschedule" deletes a booked platform post and puts the item back in line. Also `youtubeTitle`, per-item `platforms`, and `position` (0-…

  • remove_queue_item

    [DESTRUCTIVE] DESTRUCTIVE: removes an item (the draft stays in the library). A booked (`scheduled`) item is refused (409) unless `unschedule: true`, which deletes its platform post first. Needs the `publish` scope (or admin) on the Agency plan or higher. (Wraps DELETE /api/v2/qu…

  • reorder_queue_items

    [PUBLISHES to social accounts · `publish` scope] Send every waiting (queued) item id exactly once, in the new order. Booked, posted, failed and skipped items keep their places. Needs the `publish` scope (or admin) on the Agency plan or higher. (Wraps POST /api/v2/queues/{id}/ite…

  • get_analytics

    [read-only] Engagement overview for the last 7, 30 or 90 days. Pro plan or higher. (Wraps GET /api/v2/analytics.)

  • compare_post_instances

    [read-only] Per-account metrics and tag, campaign, experiment and series roll-ups. Omit postId for scope-wide roll-ups (up to 100 posts). Include reruns to compare bookings of the same content over time. Historical data stays platform-attributed. Pro plan or higher. (Wraps GET /…

  • query_insights

    [read-only] Read-only analytics query: one `metric` aggregated (median by default) over posts, broken down by up to a few dimensions (platform, weekday, hour, brand, campaign, postType, label:<key>, arm), at a fixed post age `window` (48h / 7d / 30d / lifetime) so posts are comp…

  • compare_labels

    [read-only] Splits every labelled post by the values of one label key (e.g. key "cut" → cut:opus vs cut:raw) and reports medians with n per group at the 48h / 7d snapshot. Descriptive, not a significance test. Pro plan or higher. (Wraps GET /api/v2/analytics/experiments.)

  • list_experiments

    [read-only] A/B experiments. Content joins one by carrying the label `experiment:<id>` plus `<compareKey>:<variant>`. (Wraps GET /api/v2/experiments.)

  • get_experiment

    [read-only] One experiment: hypothesis, variants, compareKey, window and status. (Wraps GET /api/v2/experiments/{id}.)

  • create_experiment

    [writes flayr data · `write` scope] Creates an A/B experiment. Then tag drafts with its `label` (experiment:<id>) and `<compareKey>:<variant>` via update_content `labels`, publish them, and read get_experiment_results. (Wraps POST /api/v2/experiments.)

  • update_experiment

    [writes flayr data · `write` scope] Changes an experiment's fields (e.g. status "running" / "done", endAt, notes). Only the fields you pass change. (Wraps PATCH /api/v2/experiments/{id}.)

  • delete_experiment

    [DESTRUCTIVE] DESTRUCTIVE: deletes the experiment record (content keeps its labels). Ask the user before calling. (Wraps DELETE /api/v2/experiments/{id}.)

  • get_experiment_results

    [read-only] The experiment's posts split by its compareKey, with the leading variant by its primary metric and n per arm. Small samples: read medians with their n. (Wraps GET /api/v2/experiments/{id}/results.)

  • get_experiment_readout

    [read-only] n per arm, pooled reach engagement rate (or average percentage watched when selected), a 90% interval and a hedged verdict (likely_winner, no_clear_winner or not_enough_data). Missing numbers are "not reported" (null), never 0. Say "likely", never "proven". (Wraps GE…

  • get_experiment_rounds

    [read-only] A version test's rounds: each closed round's frozen snapshot, the open round's live numbers (null = not reported), the winner if one was recorded, and any repeat-winner proposal. (Wraps GET /api/v2/experiments/{id}/rounds.)

  • start_experiment_round

    [writes flayr data · `write` scope] Files the round's versions into the approval queue on the given platforms, in spaced slots with UTM links. Nothing posts until a person approves each one. Round 2 re-tests the arms kept from round 1. (Wraps POST /api/v2/experiments/{id}/rounds…

  • close_experiment_round

    [writes flayr data · `write` scope] Freezes the open round's numbers and keeps the best arms for the next round. A winner is recorded only when the readout says likely_winner, or when `pick` names an arm the user chose. Ask the user before passing `pick`. (Wraps POST /api/v2/exp…

  • propose_repeat_winner

    [writes flayr data · `write` scope] Proposes slots to post the winning version again (default 3 over 2 weeks). Only a proposal: nothing is booked or posted until the user confirms it in flayr, and then each post still goes through approval. (Wraps POST /api/v2/experiments/{id}/r…

  • list_text_templates

    [read-only] Reusable text shapes per brand: sections, length targets, hook patterns, CTA slots and guardrails. Use one to shape a draft's text before create_content. (Wraps GET /api/v2/text-templates.)

  • get_text_template

    [read-only] One format (text template) with its full structure and example. (Wraps GET /api/v2/text-templates/{id}.)

  • create_text_template

    [writes flayr data · `write` scope] Creates a reusable format (text template) in a brand. (Wraps POST /api/v2/text-templates.)

  • update_text_template

    [writes flayr data · `write` scope] Changes a format; only the fields you pass change. `archived: true` hides it. (Wraps PATCH /api/v2/text-templates/{id}.)

  • delete_text_template

    [DESTRUCTIVE] DESTRUCTIVE: deletes a format (drafts started from it keep their text). Ask the user before calling. (Wraps DELETE /api/v2/text-templates/{id}.)

  • list_attribution_rules

    [read-only] The brand's "posts like this must carry a credit" rules and its mode (flag / push_down). In push_down mode publish refuses or holds a post missing a required credit — add `credits` with update_content first. (Wraps GET /api/v2/attribution-rules.)

  • list_share_rules

    [read-only] The brand's share rules: "when <account> publishes, reshare to <accounts> (or comment on it) after N minutes with text T", each with its approval mode. (Wraps GET /api/v2/automations/reshare-rules.)

  • create_share_rule

    [PUBLISHES to social accounts · `publish` scope] Creates a rule that reshares (or comments on) every new post of the source accounts. Defaults to needs_approval: each fire waits for approve in act_on_publish_action. Only LinkedIn (native reshare) and X (quote own / retweet) real…

  • list_publish_actions

    [read-only] Pending, sent and failed comments-after-publish and reshares of the brand (filter by `status`, e.g. needs_approval or failed), with what each waits on. (Wraps GET /api/v2/automations/actions.)

  • act_on_publish_action

    [PUBLISHES to social accounts · `publish` scope] approve lets a rule's reshare / comment go out at its time; retry re-sends a failed one (same idempotency key); reject / cancel stop it. Confirm with the user before approving. Needs the `publish` scope (or admin) on the Agency pl…

  • add_post_comments

    [PUBLISHES to social accounts · `publish` scope] Schedules comments on a post, sent once after it is live on that platform and its tokens resolve ({{postUrl}}, {{parentPostUrl:<post id>}}, {{youtubeUrl:<post id>}}), optionally at sendAt. Confirm with the user first. Needs the `p…

  • list_post_comments

    [read-only] A post's comments-after-publish and reshares, with status (waiting, needs_approval, sent, failed) and the resolved text. (Wraps GET /api/v2/posts/{id}/comments.)

Details

Endpointhttps://flayr.social/api/mcp (Streamable HTTP)
First published29 Oct 2026
Last updated29 Oct 2026
Registry namesocial.flayr/flayr

More data and analytics servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.