MCP App Store

Overview

Manage your BrightSite website without leaving ChatGPT. Edit pages, draft and publish blog posts, upload media, set up redirects, view analytics, and tune SEO — all from a conversation. Edits land in staged fields by default, so changes don't appear on your live site until you publish them. Destructive actions are clearly marked and require confirmation. If you manage multiple BrightSite accounts, ChatGPT will ask which one to work with on the first request.

Tools

complete_upload

ChatGPT
Complete a file upload after PUTting the file to the presigned URL from request_upload. Step 2 of 2: creates the media record in the database.

create_component

ChatGPT
Create a reusable component. Embed in pages/layouts via component("slug") or component("slug", %{prop: value}). Both live and staged fields start with the same content.

create_form

ChatGPT
Create a form

create_layout

ChatGPT
Create a page layout that wraps pages with shared structure (header, nav, footer). Both live and staged fields start with the same content.

create_media_folder

ChatGPT
Create a media folder for organizing uploaded files

create_page

ChatGPT
Create a CMS page. Assign a layout_id to wrap with shared header/nav/footer. Both live and staged fields start with the same content. Call publish_page to make it appear on the live site.

create_post

ChatGPT
Create a blog post. Content is raw HTML (not HEEx — template helpers like media() are not available). Both live and staged fields start with the same content.

create_redirect

ChatGPT
Create a URL redirect (301 permanent or 302 temporary). Source path is relative (e.g. /old-page), target can be relative or absolute URL.

delete_component

ChatGPT
Delete a reusable component

delete_file

ChatGPT
Delete a media file. Removes both the DB record and the underlying storage. Refuses if the file is referenced anywhere (template usages, post feature/og images, page og images, site logo/icon) — remove all references first, then retry. There is no force option; the user must clear references manually so they don't leave dangling references behind.

delete_form

ChatGPT
Delete a form

delete_layout

ChatGPT
Delete a page layout

delete_media_folder

ChatGPT
Delete a media folder. Refuses if the folder contains any files or subfolders — empty the folder first by moving or deleting its contents, then retry. There is no force/recursive option.

delete_page

ChatGPT
Delete a CMS page

delete_post

ChatGPT
Delete a blog post

delete_redirect

ChatGPT
Delete a URL redirect

duplicate

ChatGPT
Duplicate an entity. Creates a new draft copy with a unique slug and "— Copy" appended to the title/name. Staged and live fields are synced; the copy is unpublished. Supports: page, post, component, layout, form. (Error pages, global_code, and blog design singletons are not duplicable.)

get_active_visitors

ChatGPT
Get currently active visitors on the site (last 5 minutes)

get_analytics_summary

ChatGPT
Get analytics summary with key metrics: unique visitors, page views, sessions, bounce rate, avg session duration, views per visit

get_blog_listing_design

ChatGPT
Get the blog listing page design (the index page that shows all posts). Returns both live and staged fields.

get_blog_post_card_design

ChatGPT
Get the blog post card design (how each post appears in the listing grid). Returns both live and staged fields.

get_blog_template

ChatGPT
Get the blog post template (the layout that wraps individual blog posts). Returns both live and staged fields. There is only one per site — no ID needed.

get_browser_breakdown

ChatGPT
Get visitor browser breakdown

get_component

ChatGPT
Get a reusable component by ID. Returns both live and staged content fields.

get_country_breakdown

ChatGPT
Get visitor country breakdown

get_device_breakdown

ChatGPT
Get visitor device type breakdown (desktop, mobile, tablet)

get_error_page

ChatGPT
Get an error page by ID. Returns both live and staged content fields.

get_form

ChatGPT
Get a form by ID. Returns both live and staged content fields.

get_global_code

ChatGPT
Get global CSS, JavaScript, and Tailwind theme config that applies to all pages and layouts. Returns both live and staged fields. Update with update_global_code, then publish_global_code to push live.

get_layout

ChatGPT
Get a page layout by ID. Returns both live and staged content fields.

get_page

ChatGPT
Get a CMS page by ID. Returns both live (heex/css/js) and staged (heex_staged/css_staged/js_staged) content. Staged fields contain unpublished edits.

get_post

ChatGPT
Get a blog post by ID. Returns both live (content/excerpt) and staged (content_staged/excerpt_staged) fields.

get_site_identity

ChatGPT
Get site identity and structured data settings. Includes site title, tagline, business info (type, description, phone, email, address, coordinates), social profiles, opening hours, and price range. These fields power the site-wide Organization/LocalBusiness JSON-LD that's emitted on every page. For per-page schema (FAQPage, Article, Product, raw JSON-LD), see the structured_data key inside params_schema_staged on update_page.

get_top_pages

ChatGPT
Get top pages by views

get_top_referrers

ChatGPT
Get top traffic referrers/sources

get_version

ChatGPT
Get a specific version's full content. Use list_versions first to see available versions.

get_visits_over_time

ChatGPT
Get visits over time as a time series (views and unique visitors per interval)

list_accounts

ChatGPT
List all accounts/organizations you have access to. Use the returned IDs as account_id in other tools.

list_components

ChatGPT
List all reusable components. Embed in pages/layouts via component("slug") in HEEx templates.

list_error_pages

ChatGPT
List all error pages with their publish status

list_form_submissions

ChatGPT
List submissions for a form

list_forms

ChatGPT
List all forms with their publish status

list_layouts

ChatGPT
List all page layouts. Layouts wrap pages with shared structure (header, nav, footer). Assign via a page's layout_id, or set one as default.

list_media

ChatGPT
List uploaded media files with URLs. Use returned file IDs in page/component templates: media(file_id) for responsive images, media(file_id, width: 800, aspect: "16:9") for cropped/resized, media_url(file_id) for raw URLs. Crop options: width, height, aspect ("16:9"), fit ("crop"/"contain"/"cover"), smart (focal point), align ("top"/"bottom"/"left"/"right").

list_media_folders

ChatGPT
List media folders

list_pages

ChatGPT
List all CMS pages with their publish status

list_posts

ChatGPT
List all blog posts with their publish status

list_redirects

ChatGPT
List all URL redirects for the account

list_versions

ChatGPT
List version history for any entity. Returns versions ordered by newest first.

publish_blog_listing_design

ChatGPT
Publish the blog listing page design — copies staged content to live fields.

publish_blog_post_card_design

ChatGPT
Publish the blog post card design — copies staged content to live fields.

publish_blog_template

ChatGPT
Publish the blog post template — copies staged content to live fields.

publish_component

ChatGPT
Publish a component — copies staged content to live fields.

publish_error_page

ChatGPT
Publish an error page — copies staged content to live fields.

publish_form

ChatGPT
Publish a form — copies staged content to live fields.

publish_global_code

ChatGPT
Publish global code — copies staged CSS/JS/Tailwind config to the live fields so changes appear on the public site.

publish_layout

ChatGPT
Publish a layout — copies staged content to live fields.

publish_page

ChatGPT
Publish a page — copies staged content (heex_staged/css_staged/js_staged) to the live fields so changes appear on the public site.

publish_post

ChatGPT
Publish a blog post — copies staged content to live fields.

request_upload

ChatGPT
Get a presigned URL for uploading a file from a remote source (e.g. downloading from a URL). Step 1 of 2: call this to get an upload_url and file_id, then HTTP PUT the raw file bytes to upload_url with the correct Content-Type header. After the PUT succeeds, call complete_upload with the file_id to create the media record. For local files, use upload_file instead.

restore_version

ChatGPT
Restore an entity to a previous version. Writes version content to BOTH live and staged fields. Does NOT create a new version — the next publish will.

search_replace

ChatGPT
Surgically find-and-replace text within a specific field of any entity. Avoids re-uploading entire content bodies. Operations are applied sequentially (output of op N is input to op N+1). Changes go to staged fields only — call the appropriate publish tool to push live.

unpublish_error_page

ChatGPT
Unpublish an error page — reverts it to draft status.

unpublish_page

ChatGPT
Unpublish a page — reverts it to draft status so it's no longer visible on the public site.

unpublish_post

ChatGPT
Unpublish a blog post — reverts it to draft status so it's no longer visible on the public site.

update_blog_listing_design

ChatGPT
Update the blog listing page design. Changes go to staged fields — call publish_blog_listing_design to push live.

update_blog_post_card_design

ChatGPT
Update the blog post card design. Changes go to staged fields — call publish_blog_post_card_design to push live.

update_blog_template

ChatGPT
Update the blog post template. Changes go to staged fields — call publish_blog_template to push live.

update_component

ChatGPT
Update a reusable component. Content changes go to staged fields — call publish_component to push live.

update_error_page

ChatGPT
Update an error page. Content changes go to staged fields — call publish_error_page to push live.

update_form

ChatGPT
Update a form. Content changes go to staged fields — call publish_form to push live.

update_global_code

ChatGPT
Update global CSS, JavaScript, and/or Tailwind config that applies to all pages on the site. Changes go to staged fields — call publish_global_code to push live.

update_layout

ChatGPT
Update a page layout. Content changes go to staged fields — call publish_layout to push live.

update_page

ChatGPT
Update a CMS page. Content changes go to staged fields — the live site is NOT affected until you call publish_page.

update_post

ChatGPT
Update a blog post. Content changes go to staged fields — call publish_post to push live.

update_redirect

ChatGPT
Update an existing URL redirect

update_site_identity

ChatGPT
Update site identity and structured data settings. Changes affect the site's <title>, meta tags, JSON-LD structured data, and social share previews. Business fields (type, description, phone, email, address, coordinates, social profiles, opening_hours) populate the Organization/LocalBusiness schema that's emitted in JSON-LD on every page (cross-referenced from each page's WebPage via a stable @id). For per-page structured data (FAQPage, Article, Product, raw JSON-LD), use the structured_data key inside params_schema_staged on update_page instead.

upload_file

ChatGPT
Upload a file from a local file path. Supports images (jpg, png, webp, gif, svg, ico), videos (mp4, mov, webm), and documents (pdf, doc/docx, xls/xlsx, ppt/pptx, csv, txt, zip). Returns a file ID — use in templates with media(file_id) for responsive images, media(file_id, width: 800, aspect: "16:9") for cropped/resized, video(file_id) for video embeds, or media_url(file_id) for raw URLs.

Capabilities

Writes

App Stats

78

Tools

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily