MCP App Store
by KeenEthics

Overview

Beacons MCP gives you access to all your tools on Beacons, for creators and managers. Update your Link in Bio, Media Kit, Smart Replies, websites, and products. Check on your analytics for all of these. Access your connected social analytics. All your data you can access in the app is available on this MCP.

Tools

create_invoice

ChatGPT
Create a DRAFT Beacons invoice for this creator (the same payment_links row the Invoicing wizard saves). It never emails the payer and never sets time_submitted — sending is a separate step the creator confirms, so do not tell them it went out. Optional brand_deal_id prefills amount/currency/brand/title/message and deal-thread recipient emails. Pass amount_face_value as the face value the creator said (1500 for $1,500); conversion to minor units happens here. If the deal has more than one thread email and recipient_email is omitted, returns DATA with the candidates and writes nothing. Does not invent a recipient, does not add line items (the product has title + message + content_urls only), and does not write brand_deal_id onto the invoice row — it is returned so the send step can record the ledger link.

create_organization_creator_custom_field

ChatGPT
Add a custom field to an organization you manage — a new entry on the Custom info tab under Creators → creator in the Beacons for Managers portal, such as “T-shirt size” — and optionally fill it in for some creators in the same call with values. Use it when the manager wants to track something the built-in profile has no field for; check list_organization_creator_custom_fields first, and fill in a field that already exists with set_organization_creator_custom_field_values instead. The field also appears on the creator intake form the organization sends its creators. It proposes first and changes nothing until the manager confirms. Removing or renaming a field is done in the portal.

create_organization_pitch_material

ChatGPT
Make a new roster (also called a one-sheet) or pitch deck for an organization you manage — the shareable document used to pitch creators to a brand. Give it a title and, optionally, the creators to put on it, each as a Beacons username or their name exactly as the agency CRM shows it; every one of them has to be on the agency’s own CRM. Its web address comes from the title unless you pass a slug. It is shareable the moment it exists, so this proposes first and creates only after the manager confirms. It picks up the agency brand kit automatically; its content is edited in the Beacons for Managers portal. The result carries portal_url (where the manager edits it) and share_url (the link a brand is sent).

generate_qr_code

ChatGPT
Render a QR code, optionally in the creator's colors with a logo in the middle. Omit url to encode the creator's own Link in Bio page — the custom domain when one is mapped, else beacons.ai/<handle> — which is the QR they mean by "a QR code for my page"; pass url for any other link. This is a write — it saves a PNG under your own Beacons media prefix and returns file_url, the link the creator can download and print. Hand that link over as-is rather than rebuilding the image from the preview. Only http and https links are encoded. The code is fixed to the URL given, so prefer a Beacons short link when the destination may change. Styling that would stop the code scanning is refused, not silently softened.

get_account

ChatGPT
Who you are on Beacons: your username (handle), your public page URL, any custom domain, whether your email is verified, and which plans are active. Use this first when a question depends on what the account already has set up — "what is my url", "am I on Pro", "is my email verified". Also use it when you want a new username or page URL — "change my username", "update my username", "fix my Beacons URL", "change my page url": it returns the rules a new username must meet, what a username change does to your Beacons link and other links, whether this account can change it, and the Settings link where you make the change. It never renames. Call it again for each new name they suggest, because its rules are not carried into later messages. Reports entitlement, never billing: no amounts, invoices, cards, or renewal dates.

get_account_notification_settings

ChatGPT
Read which notifications reach you: the emails and mobile pushes for store activity — a free download, a paid sale, a new subscriber — and whether Beacons emails you a receipt when it charges your own Beacons subscription. Answers "am I notified when someone buys something?" and "do I get a receipt for my Beacons subscription?". Each field is true when that notification is currently being sent. Appointment booking reminders are always sent and are not listed. There is no notification timing, quiet hours, digest, or per-product notification setting. Read-only — set_account_notification_settings changes any of it.

get_analytics

ChatGPT
Creator analytics for one source or several side by side: links (Link in Bio and short-link clicks and unique clicks by link, link type, country, device or referrer), pages (views of their Link in Bio and Media Kit pages, and Link in Bio click rate, by page, country, device or referrer), products (store earnings split into direct sales and affiliate commissions, orders, refunds, product page views and conversion rate by product, traffic source, device, purchaser country or discount code), posts (posts on connected Instagram, TikTok, YouTube and other accounts: views, likes, comments, shares, saves and engagement by platform, account, post, content type (reels, carousels, videos) or sponsored), accounts (each connected social account's followers, follower change and profile views by platform, account or time), subscribers (email-list and form subscribers: signups, still active, unsubscribes, net change and retention by signup form or referrer platform; subscriber country is not available), emails (marketing email sends: delivered, opens, clicks, bounces, spam reports, open, click and bounce rates and deliverability by broadcast vs automation, email, automation or time) or deals (brand-deal money paid to them: revenue, paid deals and average deal value by brand, brand category, currency or month, Creator Max) or replies (Smart Reply automations: comments and unique_commenters (distinct recorded commenters), events, DMs sent, skipped and failed and send rate by automation, comment vs DM, outcome, reason or UTC time) or invoices (invoices they sent brands through Beacons Invoicing: invoices issued, amount invoiced, still unpaid, invoices paid and amount paid by customer, currency, day, week or month). For a broad question across areas, such as their biggest wins this week, a weekly recap or how they are doing overall, pass sources (the areas to cover) and the window instead of source: one call returns each area's totals for that window and the one before it. A comparison within one area, such as one platform this week vs last, is a single-source breakdown grouped by week. Pass only source (with optional start_date and end_date) for that area's full overview, the call for a general question such as how their sales, traffic, posts, followers, list or emails are doing. links: clicks over time, clicks per link, recorded revenue and form signups per link (which link made the most money or leads), and the short-link catalog capped by limit. pages: Link in Bio visits over time with country, device and referrer breakdowns, and Media Kit views; these page views are not the Home dashboard's Total Views, which counts views on their social posts. products: earnings and orders against the previous window, all-time earnings (the Home Total Earnings card), top products, sources and purchaser countries, and conversion by product (no direct vs affiliate split; ask for affiliate_earnings). posts: the window's top posts by engagement. accounts: every linked account's followers and when they last synced, connection health, engagement, audience demographics and Instagram/Facebook 28-day unique reach with its source and update time, a rolling snapshot that ignores the dates (filters.city looks up one audience city); call it for 28-day reach or before answering why a follower count looks old or how to refresh it. subscribers: signups and still-active counts by signup form and day, never names, emails or phones; the source for how their email list is doing (for growing or shrinking, ask for signups, unsubscribes and net_change, which the overview lacks). emails: the Email Marketing dashboard's delivery, open, click, bounce and deliverability numbers with new subscribers and undeliverable contacts; the source for how their emails are performing. deals: brand-deal revenue paid in the window by month, brand and category, all-time closed revenue, open pipeline value by stage and what is awaiting payment; brand deals only, never added to products. replies: every Smart Reply automation with its all-time sends and link clicks, and the latest comment and D…

get_brand_deal

ChatGPT
One of your own brand deals in full: terms, deliverable counts, your notes, and the suggested-rate range Beacons precomputed for it. That range is frozen until the deal changes — use get_pricing_estimate to price a different or hypothetical bundle.

get_brand_deal_email_thread

ChatGPT
The email conversation behind one of your own deals, live from your connected Gmail. Returns gmail_thread_id and each message's gmail_message_id, sender, time, and body, plus saved file context. Copy those Gmail fields verbatim when replying or forwarding; Beacons UUIDs are never valid Gmail ids.

get_brand_deal_preferences

ChatGPT
Your own saved deal criteria — minimum rates, categories you want or avoid, dealbreakers. Read them before judging whether a deal is a fit or advising on a negotiation, and cite the one you relied on.

get_brand_info

ChatGPT
What Beacons knows about one brand: industry, size, headquarters, whether it runs an affiliate program you could join, and how often YOU have publicly posted about it. Take the beacons_brand_uid from a deal via get_brand_deal.

get_email_marketing_automation

ChatGPT
Detailed view of one welcome or post-purchase Email Marketing automation, such as their welcome email or welcome letter: sequence settings and each email's subject, preview line, body, recipient, open, click, bounce, spam, and drop counts and rates. Call list_email_marketing_automations first and pass its sequence_id. It also returns each email's preview line and body block by block, with each text block written in the syntax the body parameter of update_email_marketing_automation takes, so where that tool is available read an email here before adding to or changing it. It returns totals for each email, never who received it.

get_email_marketing_broadcast

ChatGPT
Read one of your broadcasts: what it says and how it performed. Returns its title, subject, preview_line (the inbox preheader) and body — the body as every block in the email in order, with the copy of each text block, the label and URL of each button, the titles and URLs inside image blocks, and the link_id, title and URL of each card and video in links and video blocks — so use this to preview, show or read a draft back before or after editing it with update_email_marketing_broadcast. Also delivery, open, click, bounce, spam, drop, and unsubscribe counts and rates, clicks by URL, a 30-day activity summary, and who the broadcast was sent to, as the names of the audience groups it targets, the store products whose buyers it adds or leaves out, and a count of any addresses entered individually. send_blocker says why it will not send: no subject, body text or audience, scheduled with nothing queued, or marked sent with nothing delivered. Call list_email_marketing_broadcasts first and pass its message_id. Subscriber identities and email addresses are not returned.

get_email_marketing_settings

ChatGPT
Your current email sender settings: the read-only sender (From) address your emails, newsletters, broadcasts and automations are sent from, the default from-name and reply-to address (where replies land) for broadcasts and automated emails, your email logo, footer social links, single- or double-opt-in mode, whether the Beacons logo shows in your email footer, and safe custom-domain status. The read half of set_email_marketing_settings, under the same argument names — read it first, because that tool replaces each field it is given and replaces social_links wholesale. Your SendGrid key and subscriber lists are not readable here.

get_media_kit

ChatGPT
Inspect your Media Kit and read your Brand Deal Profile completion percentage, checklist, and missing fields (section profile). The checklist is separate from Media Kit publication and visibility. Media Kit fields include profile/header including content category chips, About bio, contact form, rate-card prices, brand logos, case studies, featured links, appearance, social blocks, follower-strip sources, creator-entered audience demographics, privacy, SEO, slug, sharing, and pages. page_layout, brand_logos, case_studies, and featured_links are in display order. Read before editing or after an uncertain write; omit section for everything, including hidden content and its visibility. Copy only fields published by the write schema; nulls and read-only display fields are not write arguments. Does not return page-view history. Stored follower, gender, age-group, country, and city statistics are get_analytics with source accounts. Quote those when present. manual_demographics here fill only a field that tool left null, and they are creator-entered overrides.

get_organization_creator_info

ChatGPT
Detailed profile for ONE creator in an organization you manage: bio, categories, country, language, rates, creator-entered past brand partners, Media Kit brand partnerships and case studies, the full CRM profile, and overview stats plus audience demographics for each social account. crm_profile is the profile the agency maintains for this creator — the same record the Beacons for Managers portal edits under Creators → creator → Profile info — and it is the authoritative store for every built-in intake field, which list_organization_creators reports as intake_form questions whose answer is always null. Its top level (display_name, brand_deal_bio, content_categories, location, profile_pitch_photo_url) is shared data that already reaches pitch materials and Media Kits. Everything under crm_profile.agency_private is marked private in the portal and must NOT be put in anything a brand sees — a pitch, a one-sheet, a deck, an outreach email — unless the manager asks for that specific field in that specific place: language, dietary preferences, occupation, brand-deal and partnership preferences, past projects, personal milestones, birthday, gender, ethnicity, LGBTQ+ status, family members, legal name, personal and brand-deal contact email, phone number, website, and mailing-address country. Answer the manager’s own questions from it freely; it exists so they do not have to open the portal. mailing_address_country is the only address part available at all — street, city, province and postal code are encrypted at rest and no tool can read them. crm_profile.brand_deal_bio is the portal’s “Creator bio”; the top-level bio falls back to social_profile_bio, the creator’s own profile bio, when it is blank (bio_source says which). Whether a creator has a bio is answered by crm_profile.brand_deal_bio alone; read bio_note. rates and past_brand_partners stay at the top level and are not repeated inside crm_profile, and categories comes from the resolved profile rather than the CRM row: the portal’s “Content Category” is crm_profile.content_categories, so answer and edit from that. A manager asking about "past brand partners" means media_kit_brand_partnerships — the logo strip the Profile info page shows badged "in media kit" — NOT past_brand_partners, a legacy CRM column no surface renders and which is empty for almost every creator; read past_brand_partners_note before answering from either. The account fields include last-30-day average and median Reel views, average Reel watch time, average and median Story views, content engagement rate, and follower engagement rate. Audience demographics include age, gender, country, and city. Not searchable — one creator per call. For an "all stats" request or a pitch block, call this tool once, then call get_organization_creator_social_stats for every relevant account returned here; do not reconstruct account averages or medians from search_organization_content results. The average_*_last_30_days fields are PER-POST averages over the last 30 days, NOT 30-day totals — and do NOT multiply by engagement_content_count_last_30_days to get a total: each average is taken over only the subset of posts carrying that specific metric, a smaller and metric-specific count this payload does not expose, so that multiplication overstates the real total. The story-free averages are null when engagement_content_count_last_30_days is 0 or null (no story-free posts in the window at all, so there is nothing to average); a non-null average can still be 0 for an account that posted but has no view data for any of those posts, which reads the same as a real zero. average_engagement_rate_last_30_days is Beacons content engagement: the mean of (likes + comments + shares + saves) / views over story-free posts. follower_engagement_rate_last_30_days is the average likes + comments + shares + saves divided by followers (subscribers on YouTube). Both are 0-1 FRACTIONS, not percentages: 0.05 means 5%. average_reels_avg_watch_time_last_30_days is stored in HOURS; multiply by 3600 when quoting seconds. Reel metrics are story-free ave…

get_organization_creator_smart_reply_analytics

ChatGPT
One Smart Reply trigger's analytics. Send/click totals and the per-day series are not yet available on this surface — totals return null (unknown) and the series is empty; the call still validates the trigger belongs to the creator.

get_organization_creator_social_stats

ChatGPT
The complete Beacons social-stat snapshot plus daily time-series stats for ONE of a creator's social accounts, up to 400 days back. One account per call. The series beacons_social_stats includes the organization-configured engagement window, every general and platform-specific metric Beacons has for that window (including median format views, watch time, story metrics, follower engagement, growth, totals, and audience cities/countries), with creator-entered manual overrides applied. For an "all stats" request or a pitch block, pair one call per relevant account with get_organization_creator_info for the creator-level profile, rates, partnerships, and account overview. engagement_metrics.average_reels_avg_watch_time is stored in HOURS; multiply by 3600 when quoting seconds. engagement_metrics.average_story_clicks is creator-entered manual data when present, not a connected-platform measurement. A null means Beacons has no usable value for that account; never describe a null as zero. The series is IRREGULARLY SAMPLED, not one row per day, and it is SPARSER in the recent window than in the older one — across 300 sampled accounts the most recent 100 days hold 4152 rows against 7281 in the oldest 100. days_returned vs days_requested is the machine-readable version of that: a low ratio means sparse coverage for this specific call, check it before doing period-over-period math rather than assuming one row per day. Quarter-over-quarter and any other period-versus-period math is therefore biased by sampling density; compare first and last values in a period, never row counts or sums. Current YouTube refreshes often supply follower and content snapshots without daily performance, while older historical rows can contain views and engagement. A missing daily value is not evidence that Beacons lacks the current profile snapshot. accounts_reached_last_day is ALWAYS null on TikTok and YouTube — ingestion stores the view count in that column, so there is no unique-reach figure to report; use view_count for views and accounts_engaged_last_day for engagement when those values are present. content_count can DECREASE when a creator deletes content, so a posts-published figure derived from its deltas must floor at zero. YouTube follower_count is quantized to three significant figures by the upstream API, so an unchanged value there hides any movement smaller than one step — zero growth on YouTube is not evidence the account did not grow. The whole series comes from whichever Beacons account holds the freshest profile row for this account, which is not always the creator's own — the same choice get_organization_creator_info reports as first_party_data_source, though this tool does not expose that label. That account is not always the one with the longest history, so past_n_days can return far fewer first-party points than the window would suggest, with the rest degrading to sparser scraped-only rows.

get_organization_info

ChatGPT
Basic profile information about an organization you manage, including its managers (role, when added, name) and its branding: logo, badge, and the brand kit colors and fonts applied across its rosters, decks and media kits. Does not include creators — use list_organization_creators for the roster, or get_organization_roster_analytics for roster-wide follower averages.

get_organization_media_kit

ChatGPT
Read ONE agency-branded Media Kit an organization you manage owns, in full: everything list_organization_media_kits shows plus the kit’s saved sections and appearance. This is the agency’s copy; the creator’s own Media Kit is a separate document that this never reads or changes. Address the kit by media_kit_slug or by the roster creator’s manager_creator_profile_id; either is checked against this organization, so a slug the manager gives you (or the end of the kit’s public /mediakit/ address) works without listing kits first.

get_organization_pitch_material

ChatGPT
Read ONE roster (one-sheet) or pitch deck an organization you manage owns, in full: everything list_organization_pitch_materials shows plus its description, slug, the creators on it, a roster’s card-or-table view type, and its saved layout and appearance. Each creator comes back with the manager_creator_profile_id the other agency tools take, so a creator on a material can be looked up directly, along with the per-material overrides update_organization_pitch_material_creator writes: creator_bio (the Description shown for them), min_rate, max_rate and profile_picture_url. Resolve the pitch_material_id with list_organization_pitch_materials first.

get_organization_report

ChatGPT
Read ONE campaign report or pitch report an organization you manage owns, in full: everything list_organization_reports shows plus its budget, brand logo and domain, public slug, the creators on it, every content piece counted in it, and the rosters and pitch decks attached to it. Call it to answer how a campaign did: stats carries the headline numbers — creators, posts, views, engagements and engagement rate, plus spend, CPM and CPE when spend is recorded. visibility carries what the brand is shown (CPM, CPE, spend, EMV, audience, and the creators, content and platform tables) under the same show_ names update_organization_report takes, and hidden_from_brand what the shared link leaves out. Each creator comes back with the manager_creator_profile_id the other agency tools take, and each attached material with the pitch_material_id get_organization_pitch_material takes. Resolve the campaign_report_id with list_organization_reports first.

get_organization_roster_analytics

ChatGPT
Server-side average follower count by platform across every active creator on an organization you manage. Pages the full roster internally — a full page from list_organization_creators is not the roster and must not be averaged. Each creator counts at most once per platform (highest follower_count). The average denominator is creators with a known follower count on that platform; a missing count is omitted, not treated as zero. coverage is complete when every roster page was fetched, and incomplete only when a hard page cap stopped the walk. Do not invent averages when coverage is incomplete. To pick creators by follower count — "creators with more than 1M Instagram followers", "over 4M total reach" — pass min_follower_count: matching_creators then lists every roster creator at or above it, highest first, with the beacons_username a roster or deck takes. The count is summed across the platforms passed (one platform for a per-platform threshold, none for total reach across every platform). Use this instead of paging list_organization_creators. It lists 100 at a time; when next_offset is set, call again with the same arguments and offset for the next page. When coverage is incomplete the matches come from the loaded pages only, so matching_creator_count is a lower bound, not the full count. get_organization_analytics with source followers and mode detail returns the same.

get_post_comments

ChatGPT
Comments on one of your own Instagram or TikTok posts: each comment's text, author username, and like count. Pass that post's instagram_post_id as content_id from list_creator_platform_posts — that field is the post id on Instagram and TikTok. Never invent one from a URL. If truncated is true, pass next_cursor back as cursor on the same platform and content_id to read the next page. If Instagram or TikTok is not connected or the session expired, the result carries reconnect_url: give the creator that link and do not invent comments.

get_pricing_estimate

ChatGPT
What you should charge for a bundle of deliverables, priced live against your own audience and rate history. Call it with nothing for a baseline on one Instagram Reel, with brand_deal_id to price a deal as it stands, or with deliverables/add_ons for a what-if. A deliverables entry overrides its own type ON TOP of the deal bundle and cannot remove a type (a zero count is ignored). Nothing is saved, so price as many variations as the conversation needs.

get_public_page_url

ChatGPT
Get the creator's public Beacons page URL (their beacons.ai link or custom domain) — use when they ask for their page link, Beacons URL, or the link to share or paste. Always the signed-in creator's handle; there is no handle argument. Returns the canonical URL, the handle, and per-page URLs when they have more than one page. For a QR or barcode of that page, call generate_qr_code with no url. A missing handle or a Link in Bio that was never set up come back as DATA with a status, not as an error. page_available says whether the page is live or suspended by Beacons — use it for "my page says Link in Bio not available". Also returns the custom-domain mapping on the account and how to set one up — where the setting lives, the DNS records to add — so use it for "how do I use my own domain" and "my domain is not working".

get_reminder_config

ChatGPT
Which reminder channels your account can use right now — email, SMS, Google Calendar. Read it before promising a reminder on a channel: an unconfigured one names the setting that has to change.

get_shop_product

ChatGPT
Every canonical field of one of your own Shop products, under the exact same names update_store_product writes: title, price, checkout content, emails, layout, custom_slug, and more. page_appearance is the product page design under the names set_store_product_appearance writes — layout, font, and the page background, text, link, button, button-text, and block colors — with Store defaults filled in for anything never set. Course products include learner-facing course_title and course_description. waitlist_enabled says whether the product is Coming soon (a waitlist signup instead of checkout), with the waitlist copy in waitlist_heading, waitlist_description, waitlist_button_text and waitlist_launch_text, and waitlist_show_price. External-link products include external_url, the page the product redirects buyers to. Membership products deliver no files and include membership_config — the recurring price and currency, how often it bills, how many payments it takes, whether Stripe and PayPal are configured, and billing_status — plus setup_url, the Recurring price section of the Store builder. billing_status is live once a provider is charging, which update_store_product starts when it creates a membership for a creator with Stripe or PayPal attached. It is pending_payment_setup while nothing is charging, and interval and total_cycles are then null because nothing has chosen them yet. live_terms_unavailable means the provider terms could not be read, so report what is null as unknown rather than quoting a price. Also returns delivered files in display order, a read_only block (id, type, sales, sync status, store_item_version, shop_product_document_version), plus appointment_config, appointment_availability, and blocked_dates for appointment products. public_url is that product page's shareable link — the same one Beacons copies, using your custom domain when one is mapped and custom_slug when the product has one. Answer "what is the link to this product" from it; never build a URL by hand. It is null only when the account has no handle and no mapped domain. A hidden product (availability false) still has a public_url, so read availability before calling the page live. checkout_description is the product description — the Description section of the Store product editor, and the copy buyers read on the product page — as sanitized rich HTML that Beam chat renders as formatted text. The separate description field is a catalog caption, and is not what a creator means by the description. active_checkout_fields lists what the checkout already asks buyers for beyond name and email — read it before changing that set so you can tell the creator what is already on. Call this before update_store_product so a patch only changes the fields you mean to.

get_store_settings

ChatGPT
Your store-wide settings in one place: terms and conditions, whether Beacons branding is hidden, whether payment plans are offered, the four tracking pixels. Currency is set per product with update_store_product. There is no store-wide currency, tax, category, shipping, or abandoned-cart setting, and which sale notifications reach you lives in get_account_notification_settings, not here. Read-only.

list_connections

ChatGPT
Every integration on your account in one list — social accounts, payout methods, custom domains and the Google Workspace on them, and the Google Calendar and Zoom connections behind appointment bookings — each with whether it is connected, what broke and why in plain words, and a link to the page that repairs it. Use for "reconnect my Instagram", "why won't my YouTube connect", "why are my stats not syncing", "is my Stripe set up", "what email is my PayPal or Stripe on", "which PayPal connection does checkout use", "Express Checkout or Complete Payments" (Beacons has one PayPal connection, sometimes called PayPal Marketplace), "is my calendar connected for bookings", "do I have Google Workspace". Also for "disconnect my tiktok", "unlink my Instagram", "switch to a different TikTok account", "disconnect my Google Calendar" or "disconnect Zoom": no tool disconnects or switches an account, so this says where the creator does it. A social account that failed to connect is listed even if it was never linked, and a failure with no specific cause carries a support code for Beacons support. Reconnecting is an OAuth round trip and cannot be done here, so a broken integration comes back with a fix link. A payout method reports whether it is attached and the email on that Stripe or PayPal account, never the account id. A conferencing entry reports that a grant is stored, not that it still works — for whether Beam itself can read the calendar, call get_google_calendar_connection_status instead.

list_creator_platform_posts

ChatGPT
Your recent posts on one platform (up to 20 from the last 60 days), newest first, with thumbnail, content type, title, duration, caption, available view/like/comment counts and permalink. This is the source of post identity: work out which post the creator means from these captions, permalinks, timestamps and thumbnails, never from a Smart Reply list. post_source says whether Instagram was checked live. Never call a cached result latest, newest, or today. Use instagram_post_id for Smart Reply and content_id for Link in Bio feed post_ids; never construct an id from a URL. Feed writes resolve owned cached posts and may refuse a live Instagram post until it is cached. A healthy connection is only needed for Instagram auto-sync, not static cached feeds.

list_discount_codes

ChatGPT
List your Store discount codes, newest first. discount_amount is a 0–1 fraction: 0.2 means 20% off. store_item_id is the one product a code works on at checkout; a row with store_item_id null is attached to no product, so buyers cannot redeem it anywhere until set_discount_code gives it one. Optional discount_code is an exact match after trim and uppercase. Optional store_item_id omitted returns every code, null returns only codes attached to no product, and a UUID returns codes for that product. Store discount codes are percentage-only; there are no fixed-amount or flat-rate codes. writable is true on every row: set_discount_code can update it, or delete it with delete true and that row's discount_code_id. There is no expiry, usage-limit, or minimum-order capability.

list_email_marketing_automations

ChatGPT
List this creator's Beacons Email Marketing welcome and post-purchase sequences, the funnels that send emails automatically, across active, paused, draft, and archived states. Use it to audit sequence settings and each email's recipient, open, and click performance; this is not list_automations, which reads Beam Settings automation toggles, and it does not list one-off broadcasts. Call it first when they ask whether their automated emails are working, turned on, or sending, which emails are not active, or whether new subscribers got the second email, and when they mention their welcome email or welcome letter; then pass its sequence_id to get_email_marketing_automation for that one sequence. Optional status accepts active or paused; active maps to the stored running status. Returns the newest 25 sequences by default, up to 100; a start-condition id of global means any list or product. The product stores status-change time, not the last time a recipient triggered a sequence.

list_email_marketing_broadcasts

ChatGPT
List this creator's Beacons email broadcasts, the newsletters and one-off emails they send to subscribers, across sent, scheduled, draft, archived, processing, paused, and max-retries states. Call it first when they name a broadcast or newsletter by its title or date, mean a draft waiting for them to finish, or ask for their most recent one, and when they ask whether their email went out, why it is not sending, or why they did not get a test email or their customers did not get it; then pass its message_id to get_email_marketing_broadcast. Returns each broadcast's actual recipient-visible subject, status, dates, recipients, delivery, open, and click performance. Use get_analytics with source emails for account performance totals; do not call both for the same question. Optional status and query filters match the Broadcasts page. query searches titles only, never the subject or what the email says, so when they name a broadcast by its subject or copy, list without query and match their words against each title and subject yourself. Returns the newest 25 by default, up to 100, and never returns subscriber rows or email addresses.

list_email_marketing_groups

ChatGPT
List this creator's Email Marketing audience groups and member counts: how many subscribers they have, or how many emails they have collected. Returns built-in dynamic groups, pending opt-ins, unsubscribed members, store-linked groups, and creator-named groups. Counts only: subscriber names, email addresses, phone numbers, and group membership rows are never returned. Use get_analytics with source subscribers for signup trends over time.

list_email_marketing_readymades

ChatGPT
Suggest what the creator should send their email list: their Email Marketing readymades, newsletter and broadcast ideas Beacons already drafted from their own links, products, posts and tour dates, newest first. Call this first whenever they ask what to email or send their subscribers or audience, what to write about, or for email ideas, before suggesting or drafting anything yourself. Returns each readymade's id, title, description, kind (link promotion, social digest, tour promotion, product promotion), subject line and what it was built from — never the email body. Use list_email_marketing_templates for the generic starting layouts instead.

list_email_marketing_templates

ChatGPT
Call this when the creator asks to see, show, browse or list their email templates, and list them in chat rather than only linking a page. Returns the Beacons template gallery plus any templates they saved themselves: each template's id, title, description, category (share, promote, newsletter, welcome and so on), whether it starts a broadcast or an automation, and whether it is a Beacons template or their own — never the email content. For suggested emails written from the creator's own content, use list_email_marketing_readymades.

list_event_sub_events

ChatGPT
Use when someone asks what is on at an event, conference or summit: its agenda, schedule or lineup, how many sessions it has, which sessions to attend, or when and where a named session or someone's talk is. Finds the event in Beacons' event list by name and returns it with its listing description, how many sub-events it has of each sub_event_type (sessions, keynotes, panels, workshops, parties and networking) and its schedule in start order, each with its description, venue-local start and end (plus UTC when the event timezone is known), location, speakers, host, link, status and timing (upcoming, happening now or ended), along with today's date and the time now at the venue. Pass query with words from a session's name, speakers, hosts, description, type or room ("long game", "Zach King") to find it on any day, without knowing its day or time. start_date and end_date are venue-local days; sub_event_type narrows by kind. Who is going is search_event_people.

list_invoices

ChatGPT
List this creator's Beacons invoices (the same payment_links the Invoicing page uses). Filter by derived status (draft = not submitted, outstanding = submitted unpaid, paid = time_paid set, overdue = outstanding past due_date), optional brand_deal_id (resolved from ledger invoice_sent events or a unique amount+recipient match on that deal), and created_after/created_before on time_created. Returns status, amount as a minor-units + display pair, recipient, dates (created/submitted/last_emailed/due/paid/last_viewed — last_viewed is a timestamp, not a status), and brand_deal_id when resolvable. Does NOT read Stripe or PayPal balances, does not send, and does not invent a viewed status. For totals across every invoice call get_analytics with source invoices.

list_organization_brand_mentions

ChatGPT
Brand mentions by the creators of an organization you manage: the top brands by mention count (limit, default 25, max 100), each with mention/sponsored counts and up to 3 newest posts. Each post includes its publish date, content type, URL, views, likes, comments, shares, saves, and unique reach when Beacons holds those metrics. A null metric is unavailable, never zero. Use these post metrics for recent paid partnership performance; this tool reads the operational content store and does not depend on the eligibility-gated content search index. Rosters routinely mention far more brands than one page holds, so read the truncation flags: brands_truncated means more brands were mentioned in the window than were returned (raise limit), and a brand’s posts_truncated means it has more posts in the window than the ones listed — its mention_count, not the length of its posts list, is the real total. Each post’s is_sponsored is true when either the platform or Beacons marks the post sponsored; false only when both signals are false, and null when no signal is true and at least one signal is unknown. Never infer organic from null. This is the same combined signal search_organization_content documents for its own is_sponsored; filter on is_sponsored = false for organic, not on "not true". sponsored_count only ever counts explicit true rows. Each post carries the manager_creator_profile_id of the creator who published it — group on that, not on platform_username, which repeats across a roster. Filter by creator, brand name, sponsorship, or look-back window (default 365 days).

list_organization_creator_connections

ChatGPT
One rostered creator's social account connections and their health: whether each handle is connected, whether it was ever OAuth-connected at all, why a connection is down, and the most recent auth failure per platform. Use it to answer "is this creator's Instagram connected" or "why is their data stale". Social connections only — payout methods and custom domains are not exposed on the manager surface. Reconnecting is an OAuth round trip only the creator can perform from their own account, so a broken connection is something to chase with the creator, not repair here.

list_organization_creator_custom_fields

ChatGPT
Read the custom fields an organization you manage has added for its creators — the Custom info tab under Creators → creator in the Beacons for Managers portal, such as a T-shirt size or a shipping preference — and what each creator has in them. Each field comes back with its custom_field_id, label, type and options; each creator with a value per field, null where it is blank. Pass manager_creator_profile_ids for specific creators, or omit it for the first 50 on the roster. Fill values in with set_organization_creator_custom_field_values and add a field with create_organization_creator_custom_field. The built-in profile fields (bio, categories, rates …) are not custom fields; they are on get_organization_creator_info.

list_organization_creator_posts

ChatGPT
List the posts, reels and Instagram Stories that creators on an organization’s roster published between two dates, with views, likes, comments, shares and saves. Call it to gather a campaign’s posts for a report — for example everything the creators booked for a brand posted last month — or to find posts whose caption carries a hashtag or @brand tag with caption_contains. Stories are saved while they are live and stay listed after Instagram expires them. Each post comes back with the platform and public_content_id update_organization_report_posts takes to link it to a report.

list_organization_creator_smart_replies

ChatGPT
Smart Reply triggers ONE creator has set up on Instagram, with their trigger word, response, and watched post. Currently returns comment triggers only, reported as trigger_type "post" — the same vocabulary set_smart_reply takes, so the value can be passed back verbatim. dm/global triggers and send/click totals are not yet available on this surface (totals return null, meaning unknown).

list_organization_creators

ChatGPT
List the active creators an organization you manage represents, oldest-added first (or biggest first with sort: total_reach), with their Total Reach, status, assigned manager, intake-form answers, categories, languages, and social accounts (follower counts, connection state, posting volume in the requested activity window, and follower growth). Optional creator_name_query narrows the roster in SQL to creators whose display name, Beacons username, or one of their social handles contains that text, matched case-insensitively as a substring. That is how a creator named in conversation ("Kelton", "@kelkooks") becomes a manager_creator_profile_id — search_organization_creators matches content topics, not names, and will not find someone by name. total_reach is the portal CRM’s Total Reach column: one account per platform (the connected one with the most followers, else the most recently updated), follower counts summed, 0 when nothing is known. For "biggest creators" questions pass sort: total_reach and read the first page — the ranking is done in SQL across the whole roster, so do not page through and sort yourself. bio_status: empty keeps only creators whose CRM "Creator bio" (brand_deal_bio) is blank, present only those who have one, in one call; every row carries has_brand_deal_bio. The first page’s total_count is how many creators match the filters across every page, so answer "how many" from it instead of paging. Use bio_status instead of reading creators one by one with get_organization_creator_info to find missing bios. An empty creators list under a creator_name_query means nobody on the roster matched that text, not that the roster is empty. A next_cursor is only valid for the same creator_name_query, bio_status and sort. Each call is one page; a set next_cursor means more creators remain. Do not compute roster-wide averages or totals from a single page — use get_organization_roster_analytics, which pages the full roster server-side. Optional start_date / end_date (YYYY-MM-DD, inclusive UTC calendar days) set the activity window; omit both to default to the last 30 UTC days ending today. The payload echoes the resolved window as activity_start_date / activity_end_date. Each account's content_count counts ALL posts INCLUDING Instagram stories published in that window, so content_count = 0 is the right test for "is this account dark in this window". engagement_content_count excludes stories and is the comparable cadence figure across platforms. content_count_last_30_days / _90_days and engagement_content_count_last_30_days / _90_days remain the megatable's fixed snapshots and do not follow start_date/end_date. follower_count is read from the FRESHEST first-party record for that account, which is sometimes held by a different Beacons account for the same handle (usually the same person signed up twice); first_party_data_source names which, and null means no first-party record at all. Connection state comes in two sets that answer different questions and legitimately disagree. is_connected / connection_state / state_reason_type / state_reason_timestamp are always this creator’s own login: a null is_connected means this creator has no first-party connection to report, never that another account’s connection failed. The data_source_* copies of those four describe the record follower_count was read from, so they answer "is the data behind these numbers healthy" — they are identical to the own fields on creator_account, describe a different account’s record on other_beacons_account, where both sets can be non-null and disagree, and are all null when first_party_data_source is null. A disconnected own login with a connected data source means the record behind these numbers is still healthy; the reverse means the numbers rest on an unhealthy record even though the creator’s own login works. follower_growth_last_30_days is a FRACTIONAL RATE, not a percentage: 0.05 means 5% growth; it is populated on about 73% of accounts, and null means unknown, never flat. creator_categories / creator_languages are unioned across the creator’…

list_organization_media_kits

ChatGPT
List the agency-branded Media Kits an organization you manage has built for its roster creators — the agency’s own copy, styled with its brand kit, not the creator’s own Media Kit. Most recently edited first. Each row names the creator it is for and carries the manager_creator_profile_id the other agency tools take, plus the media_kit_slug that get_organization_media_kit takes. To find one creator’s kit, pass creator_name_query (their name, Beacons username, the kit slug or title) rather than paging — it is matched in SQL across every kit the organization holds. Each call is one page; a set next_cursor means more kits remain. You do not need this list to read or change a kit whose slug or roster creator you already know: get_organization_media_kit and update_organization_media_kit take either directly. For a creator’s OWN Media Kit, use get_organization_creator_info instead.

list_organization_pitch_materials

ChatGPT
List the pitch materials an organization you manage has built — its rosters (also called one-sheets) and its pitch decks, the shareable documents used to pitch creators to a brand. Most recently edited first. Pass pitch_material_type to see only rosters or only decks, and include_archived to see the ones taken out of the default list. Each row is a summary — id, type, title, archived, last edited — enough to pick one. Call get_organization_pitch_material with the pitch_material_id here for that material’s description, the creators on it, and its saved layout. This is the agency’s own material, not a creator’s Media Kit.

list_organization_reports

ChatGPT
List the campaign reports and pitch reports an organization you manage has built — a campaign report shows a brand what the roster actually delivered, a pitch report shows what it could. Most recently created first. Pass report_type to see only one kind. Each row is a summary — name, kind, brand, CPM goal, and how many creators and content pieces it counts — enough to pick one. Call get_organization_report with the campaign_report_id here for that report’s creators, its content, and the rosters and decks attached to it.

list_organizations

ChatGPT
List the management organizations you belong to. Call this first — the org-scoped tools take one of the returned organization_uids. Each membership carries has_paid_management_plan; the org-scoped tools refuse organizations without a paid Beacons for Managers plan.

list_payouts

ChatGPT
Money questions about getting paid: "when do I get paid", "have I been paid", "where is my money", "what is my payout history", "am I set up to get paid", "how much have I made", "how much have I earned", "cash me out". Returns whether a Stripe or PayPal method is attached (with a repair link when none is), lifetime earnings as gross and Beacons fee per currency, and the link to the Payouts page in Beacons. Call it for any of those asks — do not refuse them. It CANNOT report your available balance, next payout date, tax documents, or the record of individual payouts already sent: Beacons does not hold those, Stripe and PayPal do, and they are reached through the Payouts page this tool returns. Say so and hand over that link rather than inferring any of it from earnings. Beacons cannot move money, so there is no cash-out tool — a creator asking to cash out gets the same page.

list_smart_replies

ChatGPT
Every Smart Reply automation on your Instagram account — post-specific, any-post, and DM/story — with per-automation send and click stats and whether the Instagram connection is healthy. It identifies the one Instagram account configured for Smart Reply and every Instagram account connected to Beacons. Smart Reply supports one account at a time, and this tool cannot switch it. It warns when account state is ambiguous or incomplete. Never use a Smart Reply list to identify a post. Post identity comes only from published-post metadata and image or content evidence — the captions, permalinks, timestamps and thumbnails from list_creator_platform_posts. Once you have an instagram_post_id from there, call this with that id to see whether that post already has an automation. Called with no arguments it is the whole inventory, which answers "what automations do I have?" and nothing about which post the creator means. A post automation shadows any-post automations on its post, and duplicate keywords across any-post or across DM automations are rejected.

list_store_orders

ChatGPT
Your store orders with per-currency totals: what sold, what state each order is in (completed, refunded, declined, or still open), the buyer name, email and shipping address on each order, and both gross earnings and earnings net of the Beacons fee. Also your Beacons affiliate sales, orders for another creator's product you resell, with the commission, Beacons fee and payout you earned on each and its commission status (available, processing, in-flight, paid, denied), in affiliate_orders and affiliate_by_currency. This is the read for who bought or ordered a physical product and where to ship or mail it: buyer shipping addresses are in shipping_address_line_1 through shipping_country, and shipping_address_status says whether one is on file. Each store order also carries the buyer's answer to the product's custom checkout question in checkout_answers. Also holds donations and legacy paid requests, so the response says how many of the orders are actual storefront sales. State comes from the order timestamps, so a refund is never hidden behind the completion before it, and refunded orders are excluded from earnings rather than deducted. Every order carries the traffic source it came from (instagram, tiktok, youtube, facebook, direct, and so on), and by_source rolls those up per currency with an average order value, read against the account's own average in by_currency, which is what answers which source drives higher-value orders. This is also the read for how many active members or subscribers a membership has: every membership renewal is its own order, so by_membership counts members per membership product (active right now, ended or cancelled, and started in the date range), and each membership order says whether its recurring subscription is still active. When a buyer never got their receipt, this is the read that finds the order: pass its order_id to send_store_order_confirmation to resend that confirmation email. Optional filters: order_id (one order), product_id (one product; this is orders.asset_id), state (completed / refunded / declined / open), status (raw orders.status, usually store_purchase or donation), since and until (YYYY-MM-DD). Returns order objects, not a spreadsheet download. This tool never refunds, edits, or deletes an order.

list_store_products

ChatGPT
Your store catalog: title, price, availability, inventory, and setup health flags (missing_delivery_asset, no_image, no_description, hidden, zero_views). Filter with product_type, availability, and search (case-insensitive title match). Omit every filter to list newest-first up to limit — the same unfiltered page as before. product_type values and what each supports: digital-products (file download after purchase; ~70% of catalog and ~93% of paid orders — ~84% of digital-product orders are free, so a store question is not automatically a revenue question), external-link (sends the buyer to a URL you host), beacons-affiliate (Beacons marketplace affiliate listing), appointments (bookable calendar time), brand-affiliate (a brand affiliate product on your store), course (gated course content), shopify-rye (Shopify product sold through Rye), membership (recurring membership access), shopify-rye-marketplace (Shopify marketplace product sold through Rye). missing_delivery_asset is only raised for digital-products and course. hidden is availability false. Prices are what a buyer is charged. Every product carries public_url, its shareable product page link, so "what are the links to my products" is answered from this tool alone — one call, no per-product follow-up. Rename, show, hide, or reprice a product by passing its product_id straight to update_store_product — no get_shop_product read first. store_item_version is the expected_store_item_version for adding a file, link, or review. Read the product with get_shop_product only when the edit needs its current contents: its checkout_description HTML, checkout_images, review ids, or the appointment availability and blocked dates being removed. Files are edited in Beacons. zero_views is a setup health flag (true when no views have been counted for the product page yet; today's views may not be counted), not a view count. Use it to decide whether to look up views; do not name the flag to the creator. For exact product page views, orders, and conversion rate per product, call get_analytics with source products, group_by product, metrics page_views, orders, conversion_rate. Never tell the creator view counts are unavailable. total_count is the number of products matching the filters across the whole catalog, independent of limit. Answer "how many products do I have" from total_count, never from the length of the returned list.

list_top_brand_mention_creators

ChatGPT
Public social accounts posting about a brand most often, with handles and counts. Evidence that the brand works with creators in this space — a mention is organic unless proven otherwise, never proof anyone was paid.

search_brand_deals

ChatGPT
Your own brand deals — the most recently active ones, up to limit (default 100, max 250; truncated: true means more exist). Call it ONCE with no filters and read the list; nothing is gained by one call per status, and no status called ACTIVE. Statuses are PITCHED, DETECTED, NEW, NEGOTIATING, PRODUCTION, AWAITING_PAYMENT, COMPLETED, DECLINED. Archived deals are left out unless you ask for them, and threads already flagged as not-a-deal never appear. Filter only when the creator asked for a specific subset.

search_organization_content

ChatGPT
Search the indexed social posts of the creators an organization you manage represents. Returns matching posts with engagement metrics, the account they came from, and the manager_creator_profile_id that owns it — group by that id, not by platform_username, which a roster can repeat. That id is null when the handle belongs to more than one roster creator, because the index cannot say which of them posted it; do not attribute those posts. Each post also carries is_sponsored and content_type: is_sponsored is true when either the platform sponsorship flag or Beacons internal classification is true (94.6% populated on first-party rows, 87.4% on scraped), where null means NOT YET CLASSIFIED and never organic — filter on is_sponsored = false for organic, not on "not true". content_type is the platform post type (for example post, reel, story) with casing that varies by source, so match it case-insensitively; use it to drop story rows. Results are ranked by relevance, NOT by date, so this cannot enumerate a posting timeline even with since/until set. The index covers eligible accounts and a rolling window of recent posts, so absence is not proof a post does not exist.

search_organization_creators

ChatGPT
Rank the creators of an organization you manage against a campaign brief. search describes the CONTENT or audience you want ("sustainable skincare routines for Gen Z") and is matched against the posts creators publish, never against who they are — a creator name or social handle passed here is read as a topic and finds nothing. To resolve a creator by name or handle, pass creator_name_query to list_organization_creators instead. Returns manager_creator_profile_ids with a relevance score (not comparable across different queries), each creator’s total_reach (the portal CRM’s Total Reach, as list_organization_creators reports it) and the posts used as evidence. Optionally narrow to accounts on given platforms within a min and max followers range. Join the ids with list_organization_creators for creator details.

search_reminders

ChatGPT
Your own brand-deal reminders. Call it ONCE with no filters for every pending reminder across all types and deals; filter only for a specific subset. Already-sent reminders are excluded unless you ask for them.

send_push_notification

ChatGPT
Send a push notification to the authenticated user's Beacons native mobile app. The recipient is the caller — there is no recipient argument. Title max 50 characters, body max 178. Optional deeplink is a relative in-app path (for example website/home), never an external URL. This is a write — it delivers a real notification to the caller's phone.

set_account_notification_settings

ChatGPT
Turn your notifications on or off. Use this whenever someone wants to stop or start being notified — "stop emailing me every time something sells", "turn push notifications back on for new sales", "notify me about subscribers but not free downloads", "send me a receipt for my Beacons subscription". Covers store activity (free sales, paid sales, new subscribers, affiliate suggestions) and the receipt for your own Beacons subscription charge. Pass only the fields you are changing; every other notification is left exactly as it was. Each field is true to receive that notification and false to stop it. This changes ONLY whether notifications are sent — it cannot change your plan, your card, what you are charged, or anything else about your subscription, and it does not touch your store settings. It is NOT your email marketing sender settings (set_email_marketing_settings), and NOT Beam's own daily brief, reminders, or proactive texts, which live in Beam's settings. Notification timing, quiet hours, digests, and per-product notification settings do not exist — do not offer them. Free on every plan.

set_discount_code

ChatGPT
Create or update one of your Store percentage discount codes. Omit discount_code_id to create; pass it from list_discount_codes to update that exact row — never look a row up by code text, because duplicates can exist. discount_code is trimmed and uppercased, 1–200 characters, required on create. discount_amount is a 0–1 fraction required on create: 0.2 means 20% off and 1 means 100% off (a free order). Zero is invalid. store_item_id omitted or null on create is store-wide; a UUID scopes the code to one owned, non-deleted product. On update, omitted fields stay unchanged and explicit null store_item_id makes it store-wide. The same normalized code cannot be reused anywhere on the account — a code already in use store-wide or on any product blocks a new or updated code with the same text, regardless of scope. New rows are always percentage; fixed-amount codes cannot be written here. There is no expiry, usage limit, minimum-order rule, disable, archive, restore, or delete — open Store to delete a code, and never claim a deletion happened. The first call shows the proposed row and writes nothing; type yes, then call this tool again with the same values to apply it.

set_email_marketing_settings

ChatGPT
Change your email sender settings: the default from-name and reply-to address for broadcasts and automated emails, so replies land in the inbox you choose, your email logo, footer social links, single- or double-opt-in mode, and whether the Beacons logo shows in your email footer. The sender (From) address itself is read-only. Pass any subset; each field you pass REPLACES the current value, and social_links replaces the whole list — call get_email_marketing_settings first so you keep what you did not mean to change. Setting show_beacons_logo to false is refused unless your plan includes email branding: the call returns status needs_upgrade and writes nothing at all, including the other fields it carried. Setting it back to true works on any plan. This does not touch your SendGrid API key or your subscriber lists — neither is editable through this tool.

set_media_kit_design

ChatGPT
Change Media Kit text, button and card colors with their hover states, the font, the corner preset, the background color, accents, the webpage/resume header layout, Cover Image, whole-block visibility, page_layout order and where a block sits by position, or featured-links layout. Read get_media_kit (whole kit or section design), then pass exactly one of appearance, cover, block_visibility, order, or featured_links. New color treatments are solid-only: background_color writes both surfaces and is refused on a stored non-solid background unless the same call sets background_type to solid, while background_color1 paints the whole main kit and background_color2 paints social analytics below it. Passing the individual colors preserves any existing legacy treatment. Unreadable color pairs are refused; text on a background image or video already stored cannot be contrast-checked (card, button, and accent pairs still are). Link in Bio page settings that share the same stored document are not editable here, and naming one says so. featured_links is the block heading and layout — column count, carousel, image aspect ratio and text alignment — not the rows. Hiding is not deletion; this does not edit individual social metrics. Changes apply immediately; omitted fields stay unchanged.

set_media_kit_portfolio

ChatGPT
Edit your Media Kit portfolio: add, update, hide, show, or remove manual rate-card prices; change past-partner logos; change case studies and the total views, likes and comments they display; or change featured portfolio/press links. Read get_media_kit first, then pass exactly one of rate, brand_partner, case_study, or featured_link. Rate update/remove uses rate_id, not the deliverable name, and remove requires confirmation. Set rate.display false to hide one line without deleting it and true to show it again. brand_partner, case_study, and featured_link share optional placement; case studies use brand_name plus title, and retitling one takes the title it has now plus new_title rather than a changed title alone. featured_link can set subtitle, image, open-in-new-tab, countdown, and scheduling (unix seconds); action add creates the links block when the kit has none, and action update still needs an existing row. Pass every supplied case-study post in deliverables to merge them in one edit. Post-only additions apply immediately, including new studies; analytics and other case-study field edits require confirmation in chat. Destructive rate or brand-partner edits require confirmation; additive partners, rate adds/updates, rate visibility, featured links, and placement-only moves apply immediately. This does not change brand deals, structured pricing, block visibility, or rate-card line order.

set_media_kit_profile

ChatGPT
Edit your Media Kit profile: display name, header content category chips, profile photo, About bio, or collaboration contact form. Read get_media_kit first, then pass exactly one of header, bio, or contact_info; omitted fields stay unchanged and only documented empty values clear them. header.categories replaces the content category chips on the Media Kit and on Link in Bio (at most 5 Beacons content category names; an empty list clears them). header.headline is one freeform chip instead, and the two cannot be combined. Bio/contact writes and display-name, headline, or categories edits require confirmation; photo, pronouns, and location-only edits apply immediately. Brand Deal Profile content categories are a separate list and are not changed here. Offer bio or contact drafts without calling this tool; their pick of a draft is the go-ahead to call it in that same turn, and the confirmation it returns is the only gate — never ask for approval before calling.

set_media_kit_settings

ChatGPT
Publish or unpublish your Media Kit, set visitor gating and tracking, edit search and link-preview title and description, change the custom slug, set sharing, or add and update kit pages. Pass only fields to change. Tightening privacy or turning tracking off applies immediately. Publishing, exposing more content, turning tracking on, or changing the custom slug requires confirmation — a slug change breaks every kit link already sent to a brand. Does not reveal hidden blocks, set a password, or delete the kit.

set_media_kit_social

ChatGPT
Add a social-statistics block, rename its handle, show or hide statistics, set the stat range every stats block reports over (30 or 90 days, or the last 10 or 20 posts — nothing longer than 90 days exists, so a year of stats cannot go on the Media Kit), edit the follower strip — including adding, updating, or removing a manual follower count for a platform Beacons does not sync — or type in the audience age, gender, top countries and top cities by hand for instagram or tiktok when the platform gives no Insights. Read get_media_kit (section social). Pass exactly one of platform, followers, demographics, or stat_range. For a stats block, pass platform; username to add or rename; metrics as display* names from that read to booleans. Omitted names stay stored; invalid names are refused with the valid list. This does not connect an account: to connect or reconnect one, call list_connections and give the creator the fix_url it returns — never ask for an OAuth token. Removing a manual follower count requires confirmation; add and update apply immediately. Synced or scraped rows cannot be removed — hide them with followers.display false. demographics values are percentages of the whole audience and are stored as creator-entered estimates shown only where Insights are missing — never report them to a brand as measured. Whole-block visibility is set_media_kit_design.

set_organization_brand_kit

ChatGPT
Set the agency’s brand kit — the colours and fonts every roster, pitch deck and agency media kit renders in — and restyle the ones it has already made. Read the current kit with get_organization_info, which returns it as pitch_material_theme. Pass only the keys you are changing; the rest of the kit carries over. Because this restyles material the agency may already have shared, it proposes first, says how many documents it would restyle, and applies only after the manager confirms. Colours are opaque six-digit hex. Each font ships its own weights, so a weight has to be one the chosen font actually has. This is the agency-wide kit, not one document’s appearance.

set_organization_creator_custom_field_values

ChatGPT
Fill in one of an organization’s custom fields — an entry on the Custom info tab under Creators → creator in the Beacons for Managers portal, such as “T-shirt size” — for one or many creators in one call: “Alfredo is S, Anderson is XL” is one call with two values. Name the field by its label or custom_field_id from list_organization_creator_custom_fields; a field that does not exist yet is added with create_organization_creator_custom_field. Filling a blank value applies at once; replacing or clearing a value already there proposes first and changes nothing until the manager confirms. Only the named creators and field change.

set_organization_info

ChatGPT
Change an organization you manage: its display name, its primary contact person, whether its profile is publicly visible, its logo, and the badge it puts on its creators’ public pages. Read the current values with get_organization_info first — they come back under the same field names. Pass only the fields you are changing. Anything that changes what people outside the organization see — public visibility, or switching a badge placement on or off — proposes first and applies only after the manager confirms. The location, categories, platforms, roster size and verification that get_organization_info also returns belong to the shared manager profile and cannot be changed here, and the agency’s colours and fonts belong to set_organization_brand_kit.

set_organization_pitch_material_creators

ChatGPT
Set exactly which creators a roster or pitch deck shows. This REPLACES the whole list, so pass everyone who should be on it, not just the ones being added — read the current set with get_organization_pitch_material first. Every username must be on the organization’s own roster. Anyone holding the link sees the new set, so this proposes first, shows what is being added and removed, and applies only after the manager confirms. Creators who stay on it keep the ratings a brand has already given them.

set_smart_reply

ChatGPT
Create, edit, or move one Instagram Smart Reply automation. Omit trigger_id to create; pass the trigger_id from a list tool to edit. Passing a trigger_type that differs from the automation's current one moves it — it keeps its id and its stats, and moving to a DM automation drops its public comment replies. Keywords are lowercased and deduped. exact_match defaults to true, which is what the builder does — contains matching is broad, so a keyword of "link" also fires on "linkedin". Destinations become buttons (max 3): an external_link needs only its url, while link_in_bio, products and collections also need the item_id of something the creator owns. Never use a Smart Reply list to identify a post. Post identity comes only from published-post metadata and image or content evidence — the captions, permalinks, timestamps and thumbnails from list_creator_platform_posts. Once the post is chosen, list_smart_replies with that instagram_post_id says whether it is free, and duplicate keywords across any-post or across DM automations are rejected. A create aimed at a post that already has an automation is refused: edit that automation by its trigger_id, or pick another post. The same call can change opening DM copy, follower gating, the one-time no-click reminder, and email collection — which asks the recipient to reply with their email address and saves it to the audience list. Plans below Creator Plus add a Sent with Beacons note after the payload. This tool cannot undo a completed change. If the creator asks to undo, never create or pause another automation; re-read the current automation and explain that its previous values are unavailable. Call list_smart_replies first. This tool writes only to smart_reply_instagram_username; it cannot target or switch to another connected Instagram account.

set_smart_reply_active

ChatGPT
Pause or resume one automation. Pausing keeps its keywords, message and all of its stats, so it is the reversible way to turn something off. Pausing a post automation lets any-post automations run on that post again. Call list_smart_replies first. This tool writes only to smart_reply_instagram_username; it cannot target or switch to another connected Instagram account.

set_store_product_appearance

ChatGPT
Set the layout, colors, and font of ONE of your own Store product pages — the Store builder's Design drawer: layout (Original, Landscape, Dynamic), page background, text, link, buy button (CTA) and button-text colors, block background and block text colors, and font. Only the fields you pass change, it applies immediately, and your other products and your Link in Bio are untouched (recolor the whole Link in Bio with set_link_in_bio_appearance). Creators speak in color words and schemes ("navy blue and cream", "earthy", "match my logo"): translate them into #RRGGBB values yourself, and when they name a scheme rather than a field, choose harmonious values for all seven color fields with readable contrast on each text-on-fill pair. Read the current design first from page_appearance on get_shop_product.

set_store_settings

ChatGPT
Edit your store-wide settings: terms and conditions, whether they are shown at checkout, the four tracking pixel ids, and whether the Beacons logo is hidden. Pass only the fields you are changing; anything you leave out keeps its current value. Pixel fields take the id only (GA4 Measurement ID, Meta Pixel ID, TikTok Pixel ID, Pinterest Tag ID), up to 30 characters, not the full snippet. An empty string clears that pixel. hide_branding is refused unless you are on Creator or higher, and SETTING a pixel id is refused unless you are on Creator Plus or higher — the store page only fires pixels on that plan. A refused call returns status needs_upgrade with the required_plan and writes nothing at all, including the other fields it carried. Clearing a pixel works on any plan. Whether you are emailed or pushed when something sells is NOT here — that is set_account_notification_settings. enable_payment_plans is not writable here.

update_organization_creator

ChatGPT
Change how one creator sits on an organization you manage: their roster status (recruiting, onboarding, active, inactive), whether the deal is exclusive or non-exclusive, and the private note the agency keeps about them. Read the current values with list_organization_creators first — they come back under the same field names. Pass only the fields you are changing; the rest of the profile is left alone. Moving a creator OFF active takes them out of the roster that list_organization_creators and the roster reports read, and changing the management type restates the agency’s deal with them, so those two changes propose first and apply only after the manager confirms. A note applies at once and is added after the existing private note rather than replacing it; notes: null clears the note. This edits the agency’s own record about the creator and never the creator’s own Beacons account — it cannot touch their Media Kit, Link in Bio, or Smart Replies. The notes field is an internal memo no brand ever sees: a request to change a creator’s bio, blurb, pitch blurb, rates, languages or any other profile detail belongs to update_organization_creator_profile, never here.

update_organization_media_kit_brand_partners

ChatGPT
Add brands to, or remove them from, the Past brand partners logo strip on the agency-branded Media Kit an organization you manage keeps for a roster creator — for example the sponsors list_organization_brand_mentions found for them. Name each brand the way people know it ("Warner Bros. Pictures", not the handle "wbpictures"), and let the manager choose which to add. Each added brand gets its logo from the Beacons brand directory unless you pass logo_url; several matches or none leave it as the name alone, and the proposal says which. Read the current strip with get_organization_media_kit first. The kit is public, so this proposes first and applies only after the manager confirms. Only the agency copy changes; the creator’s own Media Kit is never written here.

update_organization_pitch_material_creator

ChatGPT
Edit ONE creator’s details on ONE roster (one-sheet) or pitch deck — what the Beacons for Managers portal opens behind the pencil beside a creator under Settings › Creators. creator_bio is the Description box there, which managers also call that creator’s pitch blurb or bio; min_rate and max_rate are the Min rate and Max rate shown beside them; profile_picture_url is the photo this material uses for them. Every one is an override for THIS pitch material only — clear it and the material falls back to the creator’s agency Media Kit. Read the current values with get_organization_pitch_material first; every creator on it comes back under these same field names. This is NOT the creator’s own CRM roster profile and NOT the agency’s private note about them — update_organization_creator owns both, and those are per-creator while this is per-material. It does not change the per-platform show/hide toggles. A pitch material is live for anyone holding its link, so this proposes first and writes only after the manager confirms.

add_media_kit_brand_partner

Claude

add_media_kit_case_study

Claude

add_media_kit_rate

Claude

add_media_kit_social_platform

Claude

generate_qr_code

Claude

get_creator_social_stats

Claude

get_email_marketing_analytics

Claude

get_firestore_document

Claude

get_invoice_analytics

Claude

get_media_kit_analytics

Claude

get_organization_creator_info

Claude

get_organization_creator_smart_replies

Claude

get_organization_creator_smart_reply_analytics

Claude

get_organization_info

Claude

get_organizations

Claude

get_smart_reply_analytics

Claude

list_firestore_subcollection

Claude

list_organization_brand_mentions

Claude

list_organization_creators

Claude

match_organization_creators

Claude

search_organization_content

Claude

send_push_notification

Claude

set_media_kit_appearance

Claude

set_media_kit_bio

Claude

update_firestore_document

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

119

Tools

3

Prompts

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily