MCP App Store
by KeenEthics
Business & Operations
Pixelesq icon

Pixelesq

by Devanand Babu

Overview

Connect your Pixelesq website to ChatGPT and manage it through conversation. Create landing pages by choosing from over 60 section types, generate content, and save pages ready to publish. Manage blog posts, team bios, case studies, and other structured content. Monitor Google Search Console rankings, indexing status, and site traffic. Update SEO metadata, create URL redirects, and customize your site's theme without leaving ChatGPT.

Tools

bind_section_to_collection

ChatGPT
Connect a Uislice section on a page to a collection (datasource), so the section's items render entries from that collection instead of static placeholder content. This mirrors the "Datasource" panel in the Apollo editor. It is a separate operation from save_section_content / save_page_content / save_partial_content; those tools do NOT change a section's collection binding. Use it after inserting a list-style section (cards, grid, listing) that should show collection entries. Mechanics: looks up the section by sectionId (id or logicalId), validates that section.type === "Uislice", and applies a SET_COLLECTION operation: the binding lands on the page's draft under the revision lock, checked against the section's current anchor, and the draft is forked from the published head first when needed. Content (ctx) and config (cfg) are untouched. Errors: returns a clear error if the section is not found, the section is a Partial (binding partials is not supported here), the collection does not exist, or the section changed while the request was in flight (BASE_VERSION_MISMATCH: read the page again and retry).

create_collection

ChatGPT
Create a new content collection. A new collection starts with the built-in Name and Slug fields; call update_collection_schema to define the rest of the field schema (text/html/number/boolean/date/image/option/reference fields), keeping those two in the list. Setting hasPages=true auto-creates a per-entry page; false stores entries without pages.

create_entry

ChatGPT
Create a new entry in a collection

create_form

ChatGPT
Create a new form in a project. The form is on no page yet, so the live site does not change; a form section shows it by referencing its id (form.formId). For a scored form (quiz, scorecard, calculator), options carry points in their field's optionScores, keyed by option id: in score mode the points are summed and scoring.results shows the card whose scoreRange (inclusive, whole numbers) holds the total, scoring.gate before_results with gateFields asks for contact details before the result shows, calculator.display writes the total as a formatted amount such as $9.6M a year, calculator.stats adds up to 4 figures worked out from the total (such as a 3-year value or a payback time), and calculator.parts with each option's optionParts shows the visitor's own split of the total as bars. The schema is checked first: duplicate field names or option values, points keyed to options that do not exist, points in the wrong shape for resultType, and gateFields naming missing fields are refused; score range gaps and overlaps come back as warnings.

create_page

ChatGPT
Create a new page in a project

create_redirect

ChatGPT
Create a URL redirect

delete_entry

ChatGPT
Delete a collection entry permanently

delete_page

ChatGPT
Delete a page permanently

delete_redirect

ChatGPT
Delete a URL redirect

duplicate_entry

ChatGPT
Duplicate an existing collection entry with all its content

duplicate_page

ChatGPT
Duplicate an existing page with all its sections and content

generate_image

ChatGPT
Generate image(s) with AI. Requires the project's AI image generation to be enabled (check get_project context.imageGeneration.enabled or get_imagegen_quota first); if generation is disabled, the monthly quota is exhausted, or too many jobs are running concurrently, the tool returns a clear error. START-ONLY: returns { status: 'pending', jobId } immediately; poll get_image_job(jobId) to retrieve the finished assets, then set an asset url as a section media.src. Use this for custom, branded, or illustrative imagery; prefer search_stock_images + upload_asset for real-world photos.

get_ai_referral_analytics

ChatGPT
Get analytics for traffic referred from AI platforms (ChatGPT, Claude, Perplexity, etc.)

get_all_page_statuses

ChatGPT
Get Google Search Console indexing status for all pages in a project

get_collection

ChatGPT
Get a collection's schema and field definitions

get_entry

ChatGPT
Get a collection entry's content and metadata

get_form

ChatGPT
Get one form with its complete schema. Returns fields with their options, option points (optionScores), calculator part amounts (optionParts) and showWhen conditions, groups, scoring (result cards, score ranges, the email gate), calculator settings, delivery settings and updatedAt. Read here before update_form_schema and pass updatedAt as its expectedUpdatedAt.

get_form_submissions

ChatGPT
Get submissions for a form

get_gsc_connection_status

ChatGPT
Check if Google Search Console is connected to this project

get_image_job

ChatGPT
Poll an AI image-generation job started by generate_image. Returns { status, assets } where status is pending|running|completed|failed; when completed, assets is [{ id, url, description }] and each url is usable directly as a section media.src.

get_imagegen_quota

ChatGPT
Check the project's monthly AI image-generation quota before calling generate_image. Returns { used, limit, remaining, plan, unlimited } (remaining is null when unlimited).

get_page

ChatGPT
Get details of a specific page

get_page_content

ChatGPT
Get the actual text content of a page's sections (titles, descriptions, CTAs, images, items). Use this to read what's on the page before editing.

get_page_index_status

ChatGPT
Get Google Search Console indexing status for a specific page

get_page_revisions

ChatGPT
Get the revision history of a page to see previous versions

get_partial_content

ChatGPT
Get the content of a partial (header, footer, or other reusable section)

get_project

ChatGPT
Get details of a Pixelesq project

get_search_performance

ChatGPT
Get Google Search Console search performance data (clicks, impressions, CTR, position)

get_section_content

ChatGPT
Get a single section's full content and config from a page. Returns the complete section including all uislices with ctx (content) and cfg (layout config). Use this to inspect one section in isolation before editing, instead of loading the whole page. Typical flow: call get_page_content (or list_pages) to find the section id, then call get_section_content to read that one section, then call save_section_content to save your edits.

get_section_defaults

ChatGPT
Get the full default content and config structure for a specific section type. Use this before creating a section to understand its exact data structure. Returns the complete defaults object with ctx (content) and cfg (layout config) that you can modify and pass to save_page_content. The defaults include properly structured fields. Replace the text values (title.value, desc.value, cta labels/urls, media src/alt, item content) with your generated content while keeping the structure intact.

get_site_analytics

ChatGPT
Get site traffic analytics (pageviews, visits, bounce rate, duration)

get_theme

ChatGPT
Get the current theme (colors, typography, spacing)

insert_section

ChatGPT
Insert a brand-new section at a given position on a page. The MCP server loads the existing sections, splices the new one in, and saves. All existing sections are preserved. Use get_section_defaults first to get a valid section template for the type you want (e.g. HeroWithMedia, Faqs). Assign one fresh UUID and use it for both section.id and uislices[0].id (the server keys the section's row by the section id). Then call insert_section with position set to the zero-based index where the new section should appear, or -1 to append at the end. Set section.type to "Uislice" for a regular content section (or "Partial" for an embedded partial). The component name (HeroWithMedia, Faqs, etc) goes on uislices[0].type, not on section.type. When inserting a Partial (shared header/footer), use the partial's id as section.id and send props as {"ctx": {}, "cfg": {}} (both fields are required by the server; the partial's real content lives in its own revisions). You MUST provide lastVersion from get_page_content latestRevision.version.

inspect_url

ChatGPT
Inspect a URL in Google Search Console (indexing, crawl, robots.txt status)

list_assets

ChatGPT
List media assets in a project (images, icons, SVGs)

list_collections

ChatGPT
List all content collections in a project

list_domains

ChatGPT
List custom domains for a project

list_entries

ChatGPT
List entries in a collection

list_forms

ChatGPT
List all forms in a project

list_pages

ChatGPT
List all pages in a project

list_partials

ChatGPT
List all partials (reusable sections like headers and footers) in a project

list_projects

ChatGPT
List all your Pixelesq projects

list_redirects

ChatGPT
List all URL redirects in a project

list_section_types

ChatGPT
List available section types for building pages. Returns each type's name, description, group, use cases, content fields, and preview image URL. Groups: hero, features, content, faqs, testimonials, pricing, form, stats, logos, header, footer, cta, search, team. Use the optional group filter to narrow results.

publish_entry

ChatGPT
Publish a collection entry to make it live

publish_page

ChatGPT
Publish a page to make it live

publish_partial

ChatGPT
Publish a partial (header, footer, or reusable section) to make it live across all pages

remove_section

ChatGPT
Remove a section from a page by id. All other sections are preserved. The removal is an explicit DELETE_SECTION operation applied on the page's draft under the revision lock (the draft is forked from the published head first when needed). sectionId may be the section's id or its logicalId (both come from get_page_content; the logicalId survives a publish, the id does not). Pass the same idempotencyKey when retrying a call whose answer was lost, so the removal is applied once.

reorder_sections

ChatGPT
Reorder the sections on a page. Provide the full ordered list of section IDs (every existing section must be included exactly once). Content is preserved; only positions change.

revert_page_revision

ChatGPT
Revert a page's draft to a previous revision. Creates a NEW draft revision whose content is copied from the given revision, making it the latest draft head. The given revision itself is not modified, and the published revision is unaffected until you publish. Use get_page_revisions to find the revision to revert to (e.g. the currently published revision). This is also the recovery path when the latest draft has become unreadable or corrupted: revert to the last known-good revision and continue from there.

revert_page_revision_to_version

ChatGPT
Roll a page revision back to one of its numbered versions by deleting all newer version patches on that revision. Version numbers count up from 1 within a revision (each save adds one). Use this to undo recent saves on the current draft without creating a new revision. WARNING: deleted versions cannot be recovered. The revision's content rolls back to the state at the given version number.

save_entry_content

ChatGPT
Save/update the content of a collection entry. Content should be a JSON object with keys matching the collection's field schema (use get_collection to see the schema). You MUST provide the lastVersion from the entry's latestRevision.version.

save_page_content

ChatGPT
Save sections to a page. This replaces the page's content with the provided sections. Each section has: id (uuid), name, type (uislice component name), and uislices array. Each uislice has: id (uuid), type (same as section type), and props with ctx (content) and cfg (layout config). Common section types: HeroWithMedia, HeroWithMediaBelow, StickyFeatures, StickyFeaturesCard, HowItWorks, Faqs, FaqsOnCard, SimpleForm, PqPricing, CardWithMedia, TextGrid, LogoGrid, MediaBentoCards, TestimonialGrid. Content fields in ctx: title { value }, subtitle { value }, desc { value }, ctas [{ label, url, variant, color }], media [{ src, alt }], items [{ title { value }, desc { value }, ctas, media, icons }]. Config fields in cfg: section { bg, hSize, vSize }, grid { columns, gap }, textsBox { alignText }, mediaBox { widthMedia }, ctaBox { direction }. You MUST provide the lastVersion from the page's latestRevision.version.

save_partial_content

ChatGPT
Save sections to a partial (header, footer, or other reusable section). This replaces the partial's content with the provided sections. Uses the same section structure as save_page_content. Unchanged fields (cfg and ctx) are automatically preserved from the existing content.

save_section_content

ChatGPT
Save a single section on a page. The MCP server fetches the page's other sections from the server, slots your updated section in place (matched by section id), and saves the full result. Sibling sections are preserved automatically. Use this for any edit to one section. Start with get_section_content to read the section, modify the fields you want, then pass the (partial or full) section object back. Merge semantics (RFC 7396 JSON Merge Patch): - Fields you send override the server's values. - Fields you omit are preserved unchanged. - To explicitly clear a field, send it as null. - Arrays (ctas, items, media, icons, menu, social, legal) are REPLACED wholesale: send the full array you want, including any items you are keeping. To remove one item, send the array without it. To add one, send the array with it. section.type must be "Uislice" for regular content sections or "Partial" for embedded partials. The component name (HeroWithMedia, Faqs, etc) goes on uislices[0].type, not on section.type. LIMITATION: changing an existing section's COMPONENT type (uislices[0].type, e.g. Faqs -> FaqsOnCard) via this tool is silently ignored by the server. To change a component type, use remove_section followed by insert_section with the new type. Icons: a stored svgStr is drawn in place of pqIcon. On section and item icons, setting pqIcon drops the stored svgStr; on a button, menu or social icon send svgStr: null with the new pqIcon. You MUST provide lastVersion for optimistic concurrency: get_section_content returns it as lastVersion, get_page_content as latestRevision.version.

search_content

ChatGPT
Search across all content in a project (pages, entries, collections). Returns matching results with their type and metadata.

search_stock_images

ChatGPT
Search Unsplash for stock photos. Returns CANDIDATE image URLs only; to actually use one, import it with upload_asset(sourceUrl) so it is optimized and stored in the project's asset library, then set the returned url as a section media.src. Use this when you need a real-world photo and the user has not supplied one.

unbind_section_from_collection

ChatGPT
Disconnect a Uislice section's collection binding so it no longer renders entries from a collection. Reverses bind_section_to_collection. Does not affect the section's content (ctx) or config (cfg). Applied as a SET_COLLECTION operation with no collection, on the page's draft under the revision lock, checked against the section's current anchor.

unpublish_page

ChatGPT
Unpublish a page (take it offline)

unpublish_partial

ChatGPT
Unpublish a partial (take it offline across all pages)

update_collection_schema

ChatGPT
Define or update the field schema of a collection. Pass the FULL ordered list of fields you want. This is a wholesale replace at the schema level (it is not a JSON Merge Patch). Each field has: - name: string identifier (used as the key in entry content) - label: human-readable label - type: one of name, slug, text, html, number, boolean, date, image, media, option, reference - required: optional boolean - helpText: optional help string - options: for option type, a comma-separated string of choices; for reference type, the target collection id; otherwise empty - list: optional boolean (allow array of values) - to: alternative for reference target id - config: optional flat object of type-specific settings. For date fields: { format, time, timeFormat } where format is one of "MMM D, YYYY" (default), "MMMM D, YYYY", "D MMM YYYY", "D MMMM YYYY", "MMM D", "MMMM D", "ddd, MMM D, YYYY", "dddd, MMMM D, YYYY", "MM/DD/YYYY", "DD/MM/YYYY", "DD.MM.YYYY", "YYYY-MM-DD", "MMM YYYY", "MMMM YYYY", "YYYY"; time is a boolean (false = calendar date only, true = date with time; this decides the value shape entries store); timeFormat is "12h" or "24h". A field sent without a config key keeps its stored config; config: null clears it. Other types take no config. Every collection has built-in Name and Slug fields (type name and type slug); they are required, never list, and their values are not part of content: the entry's name and URL slug live on the entry itself and change through update_entry. Keep both in the list when updating a collection that has them (a built-in cannot be removed or renamed); a collection holds at most one of each. A legacy collection whose name or slug is a plain text field can convert it by changing that field's type to the built-in one. Reserved field names: _raw, _pagination, _filters. The schema has no draft: live listings and entry pages read it as soon as it is saved. A field left out of the list is removed from the schema, and changing a date field's config, or removing or retyping a date field, republishes every published entry page of the collection.

update_entry

ChatGPT
Update an existing collection entry

update_form_schema

ChatGPT
Change a form's name or schema. Forms have no draft: when the form is on a published page, the change is live at once. Each top-level schema key you send (fields, groups, scoring, email and so on) replaces the stored one whole and keys you leave out are kept, so send complete values: the full fields array, the full scoring object. expectedUpdatedAt (updatedAt from get_form) is required, and the change is refused if the form changed since. The merged schema is checked like create_form's before anything is written: problems the change introduces are refused, ones already in the form come back as warnings, and fields the change removes are listed.

update_page_meta

ChatGPT
Update a page's SEO metadata (title, description, OG image)

update_redirect

ChatGPT
Update an existing URL redirect

update_theme

ChatGPT
Update theme variables (colors, typography, spacing)

upload_asset

ChatGPT
Import an image into the project's asset library, optimized. Provide EXACTLY ONE of sourceUrl (an http(s) URL the worker fetches, e.g. an Unsplash candidate) or base64Data (raw base64 image bytes, requires mimeType). Returns the stored asset { id, name, url, type, metadata }; use the returned url as a section media.src. Optimized images are stored as <name>.webp, so rely on the returned name/url, not the requested filename. There is no replace-in-place: to swap an image, upload a new one and repoint media.src.

upload_image

ChatGPT
Use this when the user has a LOCAL image (pasted into the chat, or a file on their machine) that they want on a page. It opens an upload box in the chat where the user drops the image; it uploads straight to the project's media library and returns the asset URL, which you then set as a section media.src. Prefer this over upload_asset for user-supplied local images (a pasted image's bytes never reach you, so you cannot upload it yourself). For an image that already has a public URL, use upload_asset(sourceUrl) instead.

Capabilities

InteractiveWrites

Example Prompts

Click any prompt to copy it.

App Stats

68

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily