complete_upload
ChatGPTComplete 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
ChatGPTCreate 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
ChatGPTCreate a form
create_layout
ChatGPTCreate 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
ChatGPTCreate a media folder for organizing uploaded files
create_page
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTDelete a reusable component
delete_file
ChatGPTDelete 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
ChatGPTDelete a form
delete_layout
ChatGPTDelete a page layout
delete_media_folder
ChatGPTDelete 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
ChatGPTDelete a CMS page
delete_post
ChatGPTDelete a blog post
delete_redirect
ChatGPTDelete a URL redirect
duplicate
ChatGPTDuplicate 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
ChatGPTGet currently active visitors on the site (last 5 minutes)
get_analytics_summary
ChatGPTGet analytics summary with key metrics: unique visitors, page views, sessions, bounce rate, avg session duration, views per visit
get_blog_listing_design
ChatGPTGet the blog listing page design (the index page that shows all posts). Returns both live and staged fields.
get_blog_post_card_design
ChatGPTGet the blog post card design (how each post appears in the listing grid). Returns both live and staged fields.
get_blog_template
ChatGPTGet 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
ChatGPTGet visitor browser breakdown
get_component
ChatGPTGet a reusable component by ID. Returns both live and staged content fields.
get_country_breakdown
ChatGPTGet visitor country breakdown
get_device_breakdown
ChatGPTGet visitor device type breakdown (desktop, mobile, tablet)
get_error_page
ChatGPTGet an error page by ID. Returns both live and staged content fields.
get_form
ChatGPTGet a form by ID. Returns both live and staged content fields.
get_global_code
ChatGPTGet 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
ChatGPTGet a page layout by ID. Returns both live and staged content fields.
get_page
ChatGPTGet 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
ChatGPTGet a blog post by ID. Returns both live (content/excerpt) and staged (content_staged/excerpt_staged) fields.
get_site_identity
ChatGPTGet 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
ChatGPTGet top pages by views
get_top_referrers
ChatGPTGet top traffic referrers/sources
get_version
ChatGPTGet a specific version's full content. Use list_versions first to see available versions.
get_visits_over_time
ChatGPTGet visits over time as a time series (views and unique visitors per interval)
list_accounts
ChatGPTList all accounts/organizations you have access to. Use the returned IDs as account_id in other tools.
list_components
ChatGPTList all reusable components. Embed in pages/layouts via component("slug") in HEEx templates.
list_error_pages
ChatGPTList all error pages with their publish status
list_form_submissions
ChatGPTList submissions for a form
list_forms
ChatGPTList all forms with their publish status
list_layouts
ChatGPTList 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
ChatGPTList 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
ChatGPTList media folders
list_pages
ChatGPTList all CMS pages with their publish status
list_posts
ChatGPTList all blog posts with their publish status
list_redirects
ChatGPTList all URL redirects for the account
list_versions
ChatGPTList version history for any entity. Returns versions ordered by newest first.
publish_blog_listing_design
ChatGPTPublish the blog listing page design — copies staged content to live fields.
publish_blog_post_card_design
ChatGPTPublish the blog post card design — copies staged content to live fields.
publish_blog_template
ChatGPTPublish the blog post template — copies staged content to live fields.
publish_component
ChatGPTPublish a component — copies staged content to live fields.
publish_error_page
ChatGPTPublish an error page — copies staged content to live fields.
publish_form
ChatGPTPublish a form — copies staged content to live fields.
publish_global_code
ChatGPTPublish global code — copies staged CSS/JS/Tailwind config to the live fields so changes appear on the public site.
publish_layout
ChatGPTPublish a layout — copies staged content to live fields.
publish_page
ChatGPTPublish a page — copies staged content (heex_staged/css_staged/js_staged) to the live fields so changes appear on the public site.
publish_post
ChatGPTPublish a blog post — copies staged content to live fields.
request_upload
ChatGPTGet 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
ChatGPTRestore 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
ChatGPTSurgically 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
ChatGPTUnpublish an error page — reverts it to draft status.
unpublish_page
ChatGPTUnpublish a page — reverts it to draft status so it's no longer visible on the public site.
unpublish_post
ChatGPTUnpublish a blog post — reverts it to draft status so it's no longer visible on the public site.
update_blog_listing_design
ChatGPTUpdate the blog listing page design. Changes go to staged fields — call publish_blog_listing_design to push live.
update_blog_post_card_design
ChatGPTUpdate the blog post card design. Changes go to staged fields — call publish_blog_post_card_design to push live.
update_blog_template
ChatGPTUpdate the blog post template. Changes go to staged fields — call publish_blog_template to push live.
update_component
ChatGPTUpdate a reusable component. Content changes go to staged fields — call publish_component to push live.
update_error_page
ChatGPTUpdate an error page. Content changes go to staged fields — call publish_error_page to push live.
update_form
ChatGPTUpdate a form. Content changes go to staged fields — call publish_form to push live.
update_global_code
ChatGPTUpdate 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
ChatGPTUpdate a page layout. Content changes go to staged fields — call publish_layout to push live.
update_page
ChatGPTUpdate a CMS page. Content changes go to staged fields — the live site is NOT affected until you call publish_page.
update_post
ChatGPTUpdate a blog post. Content changes go to staged fields — call publish_post to push live.
update_redirect
ChatGPTUpdate an existing URL redirect
update_site_identity
ChatGPTUpdate 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
ChatGPTUpload 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.