- Brand
- Pixelesq
- Category
- Content & Design
- Primary Subcategory
- AI Website Builders
Integration details
Description
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.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- AI Website Builders
- Secondary Subcategories
- None listed
- Brand
- Pixelesq
- Access
- Account required
- First tracked
- 2026-03-29
- Tool count
- 70
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Pixelesq
Get updates when Pixelesq’s Discoverability Score or category rank changes.
Competing in ChatGPT AI Website Builders
View Category70 tools agents can invoke
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. A binding has two parts: the collection, and a mapping that says which entry fields fill which item fields. Pass the mapping as connection, keyed by the section's list path, for example {"ctx.items": {"dataSourcePath": "entries", "fields": {"title.value": "<%=entryName%>", "desc.value": "<%=summary%>", "media[0].src": "<%=image.src%>"}}}: entryName is the entry's name and the other names are the collection's fields (get_collection lists them). Without connection, a section that already has a mapping keeps it; otherwise a mapping is built from the section's items and the collection's fields (the entry name as the item title, a text field as the description), and the result says what it mapped. When no mapping can be built the result carries a warning and the section keeps showing its own items until one is sent. Mechanics: looks up the section by sectionId (id or logicalId), validates that section.type === "Uislice", and applies one SET_COLLECTION operation with the mapping: both land 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. 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 with a new idempotencyKey).
bind_section_to_collection
Check if Google Search Console is connected to this project, and whether the connected property covers the address the site is served at (propertyCoversSite, with a suggestedProperty when another of the account's properties does)
get_gsc_connection_status
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_image_job
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_imagegen_quota
Create a new content collection. A new collection starts with the built-in Name and Slug fields; call update_collection_schema with this result's updatedAt to define the rest of the field schema (text/html/number/checkbox/date/image/icon/option/reference fields), keeping those two in the list. Entries feed listings and sections bound to the collection. hasPages=true (default false) also gives every published entry its own page, laid out by an entry-page template that starts EMPTY and can only be designed in the dashboard: until someone designs and publishes it there, published entry pages show no body. A retry makes a second collection: if the answer was lost, look for the slug with list_collections before trying again.
create_collection
Create a new entry in a collection. Content is VALIDATED against the collection's field schema (call get_collection first to see field names, types, and which fields are lists). Invalid shapes are rejected with warnings. Value shapes match save_entry_content: list: true fields take arrays; reference fields take entry ID strings (an array of IDs when list: true); date fields take YYYY-MM-DD, or an ISO timestamp with a numeric UTC offset when the field's config.time is true. The entry's name and slug are the top-level arguments, never content: keys for the built-in name and slug fields are refused. A retry makes a second entry: if the answer was lost, look for the slug with list_entries before trying again.
create_entry
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. A retry makes a second form: if the answer was lost, look for it with list_forms before trying again.
create_form
Create a new draft page in a project. The page is empty and not on the live site until it has sections and is published. If the address is already taken a suffix is added, so read the slug in the result. Pass an idempotencyKey to make a retry safe: the same key, project and address name one page, so a call whose answer was lost can be repeated without making a second page. Without a key, look for the address with list_pages before trying again.
create_page
Create a URL redirect. Redirects have no draft: the rule applies on the live site without a publish, usually within minutes, and a source that matches a live page replaces that page for visitors. A source path can have only one active redirect (list_redirects shows the ones in use), and a redirect that leads back to its own source, directly or through other rules, is refused. A source of / (the home page) or a destination on another site needs confirm: true, sent only after the user agreed. If the answer was lost, check list_redirects for the source path before trying again.
create_redirect
Delete a collection entry permanently. A published entry's page goes offline and the entry leaves live listings at once; there is no undo.
delete_entry
Delete a page permanently. A published page goes offline at once; there is no undo.
delete_page
Delete a URL redirect. The live site stops redirecting without a publish, usually within minutes.
delete_redirect
Duplicate an existing collection entry with all its content. A retry makes another copy: if the answer was lost, look for the copy with list_entries before trying again.
duplicate_entry
Duplicate an existing page with all its sections and content. A retry makes another copy: if the answer to a duplicate was lost, look for the copy with list_pages before trying again.
duplicate_page
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.
generate_image
Get analytics for traffic referred from AI platforms (ChatGPT, Claude, Perplexity, etc.)
get_ai_referral_analytics
Get a collection's schema and field definitions. updatedAt is the value update_collection_schema needs as expectedUpdatedAt. Each field has a type (name/slug/text/html/number/checkbox/date/media/image/icon/option/reference/related, or the legacy select/textarea/email/url) plus `list` (true = the field holds an ARRAY of that type), `to` (for reference fields, the target collection id) and `config` (type-specific settings; for date fields { format, time, timeFormat }, where time: true means values carry a time and a UTC offset). The built-in name and slug types hold the entry's own name and URL slug: they are required, never list, and never part of entry content (get_entry returns them as entry.name and entry.slug; change them with update_entry). ALWAYS check `list` before writing content: a reference field with list: true takes an array of entry IDs, not a single ID.
get_collection
Get a collection entry's content and metadata. name and slug are the entry's own fields, not content. draftSlug is a pending address (set through update_entry) that the next publish_entry applies. page carries the live address (page.slug), firstPublishedAt (null when the page was never public) and publishedRevisionId. Use latestRevision.version for save_entry_content, and latestRevision.id plus headAnchor for publish_entry.
get_entry
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
Gets submissions for a form (find the formId via list_forms), newest first. By default (status inbox) spam is left out and each row carries its status: ok, or suspect when the spam filter was unsure (spamReason says why). status ok, suspect or spam lists only that kind; all lists every row. Unfinished submissions (partial: true, saved when a visitor stopped part way through a multi-step form) are left out unless includePartial is true, and pagination.total still counts them. counts holds the form's totals per status, partial rows included: counts.ok is the number of real leads to report. Returns { results: [{ id, submission, createdAt, status, spamReason, partial }], pagination: { offset, limit, total }, counts: { ok, suspect, spam } } where submission is the submitted field values as JSON. Default limit 20. Note: submissions contain user-entered PII.
get_form_submissions
Get Google Search Console indexing status for all pages in a project, as last synced from Google
get_all_page_statuses
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. By default the result is a compact outline: per section its id, logicalId, name and type, and per uislice its id, type, collectionId and content (ctx), with empty values left out and each icon's svgStr markup replaced by a short reference such as svg:1a2b3c4d. Send such a reference back unchanged and the icon is kept. Layout settings (cfg) are left out: pass mode "full" for every section's cfg, or read one section with get_section_content. latestRevision.version is the lastVersion a save needs, and latestRevision.headAnchor binds a publish to what was reviewed. The text names the page, revision and section ids too.
get_page_content
Get details of a specific page
get_page
Get Google Search Console indexing status for a specific page, as last synced from Google. inspect_url checks a URL live.
get_page_index_status
Get the content of a partial (header, footer, or other reusable section). A partial is live when publishedRevisionId is set (status PUBLISHED, live true); hasUnpublishedChanges is true when its draft holds edits that are not live yet. By default sections come as a compact outline: ids, types and content (ctx) without layout settings (cfg), empty values left out, and each icon's svgStr markup replaced by a short reference such as svg:1a2b3c4d that a save keeps when it is sent back unchanged. Pass mode "full" for every field. latestRevision.version is the lastVersion save_partial_content needs, latestRevision.headAnchor the anchor publish_partial binds to.
get_partial_content
Return the Pixelesq account this connection is signed in as. The id is the Pixelesq user id: unique within Pixelesq, and unchanged across token refresh, reconnection and changes to the name or email.
get_profile
Get a project's full details: id, name, slug, plan, siteBaseUrl, moduleAccess (the modules the plan includes), settings (templateId; themeId, with get_theme for the theme itself; feature switches including scheduling, growth and sync; syncEnabled; the chatbot), brand/AI context (siteProfile, audienceStrategy, contentGeneration), content counts, and whether AI image generation is enabled at context.imageGeneration.enabled. Check that flag before calling generate_image.
get_project
Get Google Search Console search performance data (clicks, impressions, CTR, position): totals with the change against the previous period, and the top queries, pages, devices and countries, most clicks first, then most impressions
get_search_performance
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), with empty values left out. 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. When the section draws items from a collection, collectionFed lists those paths: they show the collection's entries and are read-only here.
get_section_content
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_section_defaults
Get site traffic analytics: visits, page views, bounce rate and visit length with the change against the previous period, visits per day, and the top pages, sources, devices, locations and browsers
get_site_analytics
Get the project's active theme (colors, typography, spacing). `variables` is what the live site renders; `hasUnpublishedDraft` is true when the theme editor holds staged changes that are not live yet, and `draftVariables` then carries those staged values.
get_theme
Import an image into the project's asset library, optimized. Provide EXACTLY ONE of sourceUrl (an http(s) URL the worker fetches) 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. Asset names are unique within a project, so the stored name gets a short tag from the file's content, and optimized images are stored as .webp: rely on the returned name and url, not the requested filename. There is no replace-in-place: to swap an image, upload a new one and repoint media.src. An Unsplash photo (an images.unsplash.com url from search_stock_images) is NOT copied: pass its url as sourceUrl and its stock.downloadLocation, and the tool only reports the use to Unsplash and returns { url, hotlinked: true } to set as media.src as is.
upload_asset
Insert a brand-new section at a given position on a page. It is added to the page's draft as one section; existing sections are not sent back and are untouched. 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. That UUID becomes the section's logicalId, which every section tool accepts; the result also gives the id hermes stored it under. 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. uislices[0].props needs both ctx and cfg, and uislices[0].type must be a type from list_section_types. 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 (from list_partials) as section.id; its content stays in the partial, so uislices may be left empty. A uislices[0].collectionId binds the new section to that collection in the same step. Script tags, event handlers and script links in content are refused. You MUST provide lastVersion from get_page_content latestRevision.version; the insert is refused when the page changed since.
insert_section
Inspect a URL in Google Search Console (indexing, crawl, robots.txt status). The URL must sit inside the project's connected Search Console property.
inspect_url
List the media assets in a project's library, newest first: images (photos, icons, SVGs) by default. type picks the kind: image (the default), video or application (PDFs and other files); a MIME type such as image/webp counts as its kind. search finds assets by meaning (name and description) and returns at most the 10 best matches; limit, offset and tags do not apply to a search.
list_assets
List all content collections in a project: each one's id, name, slug, hasPages, updatedAt, entry count, and its fields as name, type and list (true when the field holds an array). The built-in name and slug types hold the entry's own name and URL slug, never content. get_collection returns one collection's full field schema (labels, help text, reference targets and type-specific config).
list_collections
Lists a project's custom domains. Returns [{ id, hostname, verified, misconfigured, updatedAt }]. Use to check whether a domain is verified or misconfigured.
list_domains
List entries in a collection
list_entries
Lists forms in a project. Returns { results: [{ id, name, updatedAt, formSchema { title, fields[{ label, name, type, required, helpText, options }], button } }], pagination: { offset, limit, total } }. Default limit 20. The schema here is abbreviated; get_form returns a form's complete schema. Use to find a formId.
list_forms
Get the revision history of a page, newest first. Each revision has its id, version (a content hash, the lastVersion a save takes) and dates; isDraftHead marks the current draft and isPublished the live one. The draft head also lists its saves as [{ number, savedAt }] and its headAnchor: those save numbers are what revert_page_revision_to_version takes to undo recent saves. Edits one person makes within about five minutes of each other share one save number. limit and offset page through long histories.
get_page_revisions
Lists pages in a project. Filter by status (DRAFT|PUBLISHED|IN_REVIEW) or search by name. Returns { results: [{ id, name, slug, status, visibility, updatedAt, hasUnpublishedChanges, meta }], pagination: { offset, limit, total } }; the text names each page's id too. Default limit 20, at most 100. Call before editing or publishing to find the page id.
list_pages
List the partials (reusable sections like headers and footers) in a project. A partial is live when publishedRevisionId is set (status PUBLISHED, live true); hasUnpublishedChanges is true when its draft holds edits that are not live yet. Default limit 50, at most 100; offset pages through more.
list_partials
List all your Pixelesq projects
list_projects
List all URL redirects in a project
list_redirects
List available section types for building pages. Returns each type's name, description, group, use cases, content fields, and preview image URL. The text lists each type with its title and summary; the structured result also carries the fields and preview images. Groups: hero, features, content, faqs, testimonials, form, stats, logos, header, footer, cta. Pricing sections are in the form group. Use the optional group filter to narrow results.
list_section_types
Publish a collection entry to make it live. Bind the publish to what was reviewed: pass expectedRevisionId and expectedHeadAnchor (latestRevision.headAnchor from get_entry); hermes refuses if the draft changed since. When the entry has a pending address (draftSlug in get_entry, set through update_entry), this publish moves the page to it in the same step that makes the content live; pass that draftSlug as expectedAddress so the publish is refused if it changed meanwhile. redirectOldPath (default true) creates a redirect from the old address when the page had been public before; a first publish never needs one. When the collection has entry pages but its entry-page template has no sections yet, the result carries a warning: the entry is live but its page shows no body until the template is designed in the dashboard; tell the user.
publish_entry
Publish a page to make it live. revisionId must be the draft you reviewed: pass the latestRevision.id you read as both revisionId and expectedRevisionId, and latestRevision.headAnchor (from get_page, get_page_content or a save result) as expectedHeadAnchor. The publish is refused when a newer draft exists or the draft was edited since, so the user reviews again instead of publishing content they did not see.
publish_page
Publish a partial (header, footer, or reusable section) to make it live across all pages. revisionId must be the draft you reviewed: pass the latestRevision.id you read as both revisionId and expectedRevisionId, and latestRevision.headAnchor (from get_partial_content or a save result) as expectedHeadAnchor. A revisionId that is not the newest draft is refused, so an older version is never put live by mistake, and hermes refuses when the draft changed since it was read.
publish_partial
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. A section that is not on the page is an error, with or without a key.
remove_section
Pixelesq ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Pixelesq's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Pixelesq alternatives on ChatGPT?
As of 2026-11-02, Pixelesq competes with AgentBuild, Allo Christian, AVSBL Website Builder, B12 Website Generator, Beste, CR Servers AI Connect, Croisa, Dazzly and 30 more in ChatGPT AI Website Builders, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.