MCP App Store
Productivity
WebsitePublisher icon

WebsitePublisher

by M25

Overview

Build and publish complete websites through conversation. Connect via MCP to manage pages, forms, assets and more.

Tools

add_task_history

ChatGPT
Append a history record to a task. This is the primary way to report progress, add notes, store handover snippets, or attach architecture documents. Never overwrites existing state — fully append-only.

add_task_history

ChatGPT
Append a history record to a task. This is the primary way to report progress, add notes, store handover snippets, or attach architecture documents. Never overwrites existing state — fully append-only.

configure_form

ChatGPT
Define or update a form for a published website. Sets required fields and what actions execute on submit. Use action for a single action, or actions (array, max 3) for multiple in sequence. Built-in action (no setup needed): {\"type\": \"leads\"} — stores submissions in platform-native lead capture, retrievable via get_integration_schema on the "leads" service. External actions: {\"type\": \"iapi\", \"service\": \"resend\", ...} for email, or {\"type\": \"webhook\", \"url\": \"...\"}. The visitor only sends field values — actions are locked server-side. Use list_integrations to check available external services. IMPORTANT: When generating the JavaScript snippet for the page, always use the Safari ITP-proof pattern: store session_id in sessionStorage and send it as X-Session-Id header on both the session GET and form submit fetch calls. This is required for custom domains (e.g. www.site.com) where Safari blocks third-party cookies.

configure_form

ChatGPT
Define or update a form for a published website. Sets required fields and what actions execute on submit. Use action for a single action, or actions (array, max 3) for multiple in sequence. Built-in action (no setup needed): {\"type\": \"leads\"} — stores submissions in platform-native lead capture, retrievable via get_integration_schema on the "leads" service. External actions: {\"type\": \"iapi\", \"service\": \"resend\", ...} for email, or {\"type\": \"webhook\", \"url\": \"...\"}. The visitor only sends field values — actions are locked server-side. Use list_integrations to check available external services. IMPORTANT: When generating the JavaScript snippet for the page, always use the Safari ITP-proof pattern: store session_id in sessionStorage and send it as X-Session-Id header on both the session GET and form submit fetch calls. This is required for custom domains (e.g. www.site.com) where Safari blocks third-party cookies.

configure_visitor_auth

ChatGPT
Configure visitor authentication for a published website. Enables email-based login (magic link or 6-digit code) for website visitors. Required before visitors can authenticate. Use method "link" for one-click email login, "code" for a 6-digit verification code.

configure_visitor_auth

ChatGPT
Configure visitor authentication for a published website. Enables email-based login (magic link or 6-digit code) for website visitors. Required before visitors can authenticate. Use method "link" for one-click email login, "code" for a 6-digit verification code.

create_edit_session

ChatGPT
Creates a visual edit session so the user can upload and manage images on their published page using a browser-based editor. Returns an edit URL to share with the user. When creating pages with images, use data-wpe-slot placeholder images instead of base64 — then create an edit session so the user can upload real images.

create_edit_session

ChatGPT
Creates a visual edit session so the user can upload and manage images on their published page using a browser-based editor. Returns an edit URL to share with the user. When creating pages with images, use data-wpe-slot placeholder images instead of base64 — then create an edit session so the user can upload real images.

create_entity

ChatGPT
Create a new entity (data model). Example: create a "blogpost" entity with title, content, author fields.

create_entity

ChatGPT
Create a new entity (data model). Example: create a "blogpost" entity with title, content, author fields.

create_fragment

ChatGPT
Create a reusable HTML fragment. Returns include_tag to embed in pages: <!--#wps-include fragment="name" -->. Use for shared elements like nav, footer, banners.

create_fragment

ChatGPT
Create a reusable HTML fragment. Returns include_tag to embed in pages: <!--#wps-include fragment="name" -->. Use for shared elements like nav, footer, banners.

create_page

ChatGPT
Create a new page with HTML content. Tip: use <!--#wps-include fragment="name" --> to embed reusable fragments (nav, footer). Create fragments first with create_fragment.

create_page

ChatGPT
Create a new page with HTML content. Tip: use <!--#wps-include fragment="name" --> to embed reusable fragments (nav, footer). Create fragments first with create_fragment.

create_project

ChatGPT
Create a new project for the user. Each project is an independent website with its own pages, assets, entities, and subdomain. Respects plan limits (Free: 1 project, Starter: 3, Pro: 10, Agency: unlimited). Returns the new project_id and subdomain.

create_project

ChatGPT
Create a new project for the user. Each project is an independent website with its own pages, assets, entities, and subdomain. Respects plan limits (Free: 1 project, Starter: 3, Pro: 10, Agency: unlimited). Returns the new project_id and subdomain.

create_record

ChatGPT
Create a new record in an entity. Fields depend on the entity schema.

create_record

ChatGPT
Create a new record in an entity. Fields depend on the entity schema.

create_scheduled_task

ChatGPT
Create a scheduled task that runs automatically at specified times. Supports cron expressions for flexible scheduling. Use run_once=true for one-time scheduled actions (e.g., publish a page at a specific date/time). Common cron patterns: "0 9 " (daily 9am), "0 9 1" (Monday 9am), "0 /6 " (every 6h), "0 0 1 1 " (Jan 1st midnight).

create_scheduled_task

ChatGPT
Create a scheduled task that runs automatically at specified times. Supports cron expressions for flexible scheduling. Use run_once=true for one-time scheduled actions (e.g., publish a page at a specific date/time). Common cron patterns: "0 9 " (daily 9am), "0 9 1" (Monday 9am), "0 /6 " (every 6h), "0 0 1 1 " (Jan 1st midnight).

create_task

ChatGPT
Create a new task item in the shared task tracker. Use descriptive slugs like "sapi-fase4" or "capi-intake-redesign".

create_task

ChatGPT
Create a new task item in the shared task tracker. Use descriptive slugs like "sapi-fase4" or "capi-intake-redesign".

delete_asset

ChatGPT
Delete an asset

delete_asset

ChatGPT
Delete an asset

delete_entity

ChatGPT
Delete an entity and ALL its data. This action cannot be undone!

delete_entity

ChatGPT
Delete an entity and ALL its data. This action cannot be undone!

delete_fragment

ChatGPT
Delete a reusable HTML fragment. Pages using its include_tag will render an empty string in its place.

delete_fragment

ChatGPT
Delete a reusable HTML fragment. Pages using its include_tag will render an empty string in its place.

delete_page

ChatGPT
Delete a page

delete_page

ChatGPT
Delete a page

delete_record

ChatGPT
Delete a record by ID

delete_record

ChatGPT
Delete a record by ID

delete_scheduled_task

ChatGPT
Delete a scheduled task and all its run history.

delete_scheduled_task

ChatGPT
Delete a scheduled task and all its run history.

execute_integration

ChatGPT
Execute an integration action — e.g., send an email via Resend, create a payment via Mollie. The system resolves vault credentials server-side so you never handle API keys directly. The integration must be configured first via setup_integration (not needed for built-in integrations). Call get_integration_schema first to get the exact endpoint name and required input fields.

execute_integration

ChatGPT
Execute an integration action — e.g., send an email via Resend, create a payment via Mollie. The system resolves vault credentials server-side so you never handle API keys directly. The integration must be configured first via setup_integration (not needed for built-in integrations). Call get_integration_schema first to get the exact endpoint name and required input fields.

export_tasks

ChatGPT
Generate a Markdown overview of all tasks grouped by status (in_progress, blocked, open, null, done) with completion percentages. Tasks without history appear under "Geen status". Includes recent activity from today and yesterday. Use this at the start of a session for a quick backlog overview, or to share current status.

export_tasks

ChatGPT
Generate a Markdown overview of all tasks grouped by status (in_progress, blocked, open, null, done) with completion percentages. Tasks without history appear under "Geen status". Includes recent activity from today and yesterday. Use this at the start of a session for a quick backlog overview, or to share current status.

get_analytics

ChatGPT
Get visitor analytics for a project. Returns pageview counts, unique visitors, top pages, referrers, device breakdown, UTM data, or daily trend. Use period "today", "7d", "30d", or "90d".

get_analytics

ChatGPT
Get visitor analytics for a project. Returns pageview counts, unique visitors, top pages, referrers, device breakdown, UTM data, or daily trend. Use period "today", "7d", "30d", or "90d".

get_asset

ChatGPT
Read the full content of an existing asset so you can inspect it before patching. Text assets (js, css, json, svg, txt, html) are returned as UTF-8 strings in content with encoding: "utf-8". Binary assets (images, fonts, pdf) are returned as base64 in content with encoding: "base64", but only if size ≤ 1MB; above that the content is omitted and you should use the url field to download directly. Always returns version_hash (md5 of raw bytes) for future optimistic concurrency in patch_asset.

get_asset

ChatGPT
Read the full content of an existing asset so you can inspect it before patching. Text assets (js, css, json, svg, txt, html) are returned as UTF-8 strings in content with encoding: "utf-8". Binary assets (images, fonts, pdf) are returned as base64 in content with encoding: "base64", but only if size ≤ 1MB; above that the content is omitted and you should use the url field to download directly. Always returns version_hash (md5 of raw bytes) for future optimistic concurrency in patch_asset.

get_edit_session_changes

ChatGPT
Reads back what the user changed during a visual edit session. Returns a structured changelog with uploaded images, dimensions, style changes, etc. Use this after sharing the edit URL with the user to see what they did.

get_edit_session_changes

ChatGPT
Reads back what the user changed during a visual edit session. Returns a structured changelog with uploaded images, dimensions, style changes, etc. Use this after sharing the edit URL with the user to see what they did.

get_entity_schema

ChatGPT
Get the schema definition of an entity, including all its properties and their types

get_entity_schema

ChatGPT
Get the schema definition of an entity, including all its properties and their types

get_integration_schema

ChatGPT
Get the full schema of a specific integration: all available endpoints, required fields, and input parameters. Call this before execute_integration to know exactly how to call an endpoint. Use list_integrations first to see which integrations are available.

get_integration_schema

ChatGPT
Get the full schema of a specific integration: all available endpoints, required fields, and input parameters. Call this before execute_integration to know exactly how to call an endpoint. Use list_integrations first to see which integrations are available.

get_page

ChatGPT
Get a specific page with its content. Returns version and version_hash for use with patch_page.

get_page

ChatGPT
Get a specific page with its content. Returns version and version_hash for use with patch_page.

get_page_versions

ChatGPT
Get the version history of a page. Returns metadata (version numbers, hashes, timestamps, change summaries) — no content. Useful to check what changed or find a version to rollback to.

get_page_versions

ChatGPT
Get the version history of a page. Returns metadata (version numbers, hashes, timestamps, change summaries) — no content. Useful to check what changed or find a version to rollback to.

get_project_status

ChatGPT
Get detailed status of a specific project including page, asset, and entity counts

get_project_status

ChatGPT
Get detailed status of a specific project including page, asset, and entity counts

get_record

ChatGPT
Get a single record by ID

get_record

ChatGPT
Get a single record by ID

get_skill

ChatGPT
ALWAYS call this tool at the start of every conversation where you will build or modify a WebsitePublisher website. Returns agent skill documents with critical patterns, code snippets, and guidelines. Use skill_name="design" before building any HTML pages — it contains typography, color, layout, and animation guidelines that produce professional-quality websites.

get_skill

ChatGPT
ALWAYS call this tool at the start of every conversation where you will build or modify a WebsitePublisher website. Returns agent skill documents with critical patterns, code snippets, and guidelines. Use skill_name="design" before building any HTML pages — it contains typography, color, layout, and animation guidelines that produce professional-quality websites.

get_task

ChatGPT
Get a single task with computed completion percentage, current status, and available architecture document versions.

get_task

ChatGPT
Get a single task with computed completion percentage, current status, and available architecture document versions.

get_task_history

ChatGPT
Get the full history of a task — all progress updates, notes, snippets, blockers, and architecture documents. Use with_content=true to fetch MD content from S3.

get_task_history

ChatGPT
Get the full history of a task — all progress updates, notes, snippets, blockers, and architecture documents. Use with_content=true to fetch MD content from S3.

get_tracking_scripts

ChatGPT
Get the current tracking scripts configured for a project. Returns head_scripts and body_scripts, or null if none configured.

get_tracking_scripts

ChatGPT
Get the current tracking scripts configured for a project. Returns head_scripts and body_scripts, or null if none configured.

get_visitor_auth_config

ChatGPT
Get the current visitor auth configuration for a project. Shows whether auth is enabled, which methods are allowed, and the success redirect URL.

get_visitor_auth_config

ChatGPT
Get the current visitor auth configuration for a project. Shows whether auth is enabled, which methods are allowed, and the success redirect URL.

list_assets

ChatGPT
List all assets (images, CSS, JS, etc.) in a project

list_assets

ChatGPT
List all assets (images, CSS, JS, etc.) in a project

list_entities

ChatGPT
List all entities (data models) in a project. Entities are like database tables that store structured data.

list_entities

ChatGPT
List all entities (data models) in a project. Entities are like database tables that store structured data.

list_forms

ChatGPT
List all configured forms for a project. Shows form names, required fields, configured actions, and submit limits.

list_forms

ChatGPT
List all configured forms for a project. Shows form names, required fields, configured actions, and submit limits.

list_fragments

ChatGPT
List all reusable HTML fragments in a project. Returns fragment_name, include_tag, content and version info.

list_fragments

ChatGPT
List all reusable HTML fragments in a project. Returns fragment_name, include_tag, content and version info.

list_integrations

ChatGPT
List all available integrations and their configuration status for a project. Shows which integrations are fully configured (vault secrets present and ready to use) and which are available but need setup. Use get_integration_schema to see the full endpoint details and input parameters for a specific integration.

list_integrations

ChatGPT
List all available integrations and their configuration status for a project. Shows which integrations are fully configured (vault secrets present and ready to use) and which are available but need setup. Use get_integration_schema to see the full endpoint details and input parameters for a specific integration.

list_pages

ChatGPT
List all pages in a project

list_pages

ChatGPT
List all pages in a project

list_projects

ChatGPT
List all projects the authenticated user has access to. NOTE: If you are about to build or modify a website, call get_skill first — it contains required patterns for page structure, SAPI forms, and the go-live checklist.

list_projects

ChatGPT
List all projects the authenticated user has access to. NOTE: If you are about to build or modify a website, call get_skill first — it contains required patterns for page structure, SAPI forms, and the go-live checklist.

list_records

ChatGPT
List all records of an entity type with optional pagination

list_records

ChatGPT
List all records of an entity type with optional pagination

list_scheduled_tasks

ChatGPT
List all scheduled tasks for a project, showing their status, next run time, and last execution.

list_scheduled_tasks

ChatGPT
List all scheduled tasks for a project, showing their status, next run time, and last execution.

list_tasks

ChatGPT
List all tracked tasks with current completion percentage and status. Returns root tasks only by default (child tasks are hidden — drill in with parent_id to see them, or set parent_id_null=false for the flat list). Snoozed tasks are hidden by default — use include_snoozed=true to show them. Tasks without any history have status=null — use "null" in the status filter to find them.

list_tasks

ChatGPT
List all tracked tasks with current completion percentage and status. Returns root tasks only by default (child tasks are hidden — drill in with parent_id to see them, or set parent_id_null=false for the flat list). Snoozed tasks are hidden by default — use include_snoozed=true to show them. Tasks without any history have status=null — use "null" in the status filter to find them.

patch_asset

ChatGPT
Apply targeted text changes to an existing asset (js, css, json, svg) without re-uploading the full file. Uses find/replace like patch_page. For binary assets (images, fonts), use upload_asset with overwrite: true instead.

patch_asset

ChatGPT
Apply targeted text changes to an existing asset (js, css, json, svg) without re-uploading the full file. Uses find/replace like patch_page. For binary assets (images, fonts), use upload_asset with overwrite: true instead.

patch_page

ChatGPT
Apply targeted changes to an existing page without sending the full content. base_version_hash is optional — if omitted, find/replace acts as the natural conflict guard. Supports replace, delete, insert_before and insert_after operations. Much more efficient than update_page for small edits.

patch_page

ChatGPT
Apply targeted changes to an existing page without sending the full content. base_version_hash is optional — if omitted, find/replace acts as the natural conflict guard. Supports replace, delete, insert_before and insert_after operations. Much more efficient than update_page for small edits.

remove_form

ChatGPT
Remove a form configuration from a project. Visitors will no longer be able to submit this form.

remove_form

ChatGPT
Remove a form configuration from a project. Visitors will no longer be able to submit this form.

remove_integration

ChatGPT
Remove an integration by permanently deleting all its vault secrets. After removal, the integration endpoints will no longer work until reconfigured via setup_integration.

remove_integration

ChatGPT
Remove an integration by permanently deleting all its vault secrets. After removal, the integration endpoints will no longer work until reconfigured via setup_integration.

remove_tracking_scripts

ChatGPT
Remove all tracking scripts from a project. Pages will no longer have tracking code injected.

remove_tracking_scripts

ChatGPT
Remove all tracking scripts from a project. Pages will no longer have tracking code injected.

rollback_page

ChatGPT
Rollback a page to a previous version. Creates a new version with the old content (audit trail preserved). Specify either target_version (number) or target_version_hash. Use get_page_versions to find available versions.

rollback_page

ChatGPT
Rollback a page to a previous version. Creates a new version with the old content (audit trail preserved). Specify either target_version (number) or target_version_hash. Use get_page_versions to find available versions.

set_tracking_scripts

ChatGPT
Set Google Analytics, Google Tag Manager, Meta Pixel, or other tracking/conversion scripts for a project. Scripts are automatically injected into every page: head_scripts before </head> (for analytics/GTM), body_scripts before </body> (for conversion pixels). Set a field to null or omit it to clear.

set_tracking_scripts

ChatGPT
Set Google Analytics, Google Tag Manager, Meta Pixel, or other tracking/conversion scripts for a project. Scripts are automatically injected into every page: head_scripts before </head> (for analytics/GTM), body_scripts before </body> (for conversion pixels). Set a field to null or omit it to clear.

setup_integration

ChatGPT
Configure an integration by storing its required API keys in the vault. Validates key format against the integration manifest. After setup, the integration endpoints become available for execute_integration calls. Use list_integrations first to see what secrets are required. For production API keys, consider using the Dashboard Vault tab (dashboard.websitepublisher.ai/vault) instead — keys are stored directly without passing through the AI conversation.

setup_integration

ChatGPT
Configure an integration by storing its required API keys in the vault. Validates key format against the integration manifest. After setup, the integration endpoints become available for execute_integration calls. Use list_integrations first to see what secrets are required. For production API keys, consider using the Dashboard Vault tab (dashboard.websitepublisher.ai/vault) instead — keys are stored directly without passing through the AI conversation.

update_entity

ChatGPT
Update entity metadata such as plural name, description, or public_read access. Set public_read to true to make entity data accessible without authentication via /mapi/public/{projectId}/{entity}.

update_entity

ChatGPT
Update entity metadata such as plural name, description, or public_read access. Set public_read to true to make entity data accessible without authentication via /mapi/public/{projectId}/{entity}.

update_fragment

ChatGPT
Update a reusable HTML fragment. All pages using its include_tag will serve the new content on next request (cache invalidated automatically). Pass base_version_hash from the fragment's current version to enable optimistic locking — the update will fail if another edit happened since you last read it. Use force=true to skip the version check.

update_fragment

ChatGPT
Update a reusable HTML fragment. All pages using its include_tag will serve the new content on next request (cache invalidated automatically). Pass base_version_hash from the fragment's current version to enable optimistic locking — the update will fail if another edit happened since you last read it. Use force=true to skip the version check.

update_page

ChatGPT
Replace an existing page with full new content. Requires base_version_hash (from get_page) to prevent accidental overwrites — send force: true to skip this check. For small changes, use patch_page instead — it saves tokens and preserves version history.

update_page

ChatGPT
Replace an existing page with full new content. Requires base_version_hash (from get_page) to prevent accidental overwrites — send force: true to skip this check. For small changes, use patch_page instead — it saves tokens and preserves version history.

update_record

ChatGPT
Update an existing record. Only provided fields will be updated.

update_record

ChatGPT
Update an existing record. Only provided fields will be updated.

upload_asset

ChatGPT
Upload an asset (image, font, PDF, etc). Provide exactly one of: content (base64), content_text (plain text for JS/CSS/JSON/SVG — preferred, saves tokens), or source_url (public HTTPS URL for images). Set overwrite: true to replace an existing asset.

upload_asset

ChatGPT
Upload an asset (image, font, PDF, etc). Provide exactly one of: content (base64), content_text (plain text for JS/CSS/JSON/SVG — preferred, saves tokens), or source_url (public HTTPS URL for images). Set overwrite: true to replace an existing asset.

vault_delete_secret

ChatGPT
Permanently delete a secret from the project vault. This cannot be undone. The encrypted value is destroyed.

vault_delete_secret

ChatGPT
Permanently delete a secret from the project vault. This cannot be undone. The encrypted value is destroyed.

vault_list_secrets

ChatGPT
List all secrets stored in a project's vault. Returns metadata only (key names, prefixes, service types, status) — never the actual secret values. Use this to check what credentials are stored before setting up integrations.

vault_list_secrets

ChatGPT
List all secrets stored in a project's vault. Returns metadata only (key names, prefixes, service types, status) — never the actual secret values. Use this to check what credentials are stored before setting up integrations.

vault_store_secret

ChatGPT
Store or update a secret in the project vault. The value is encrypted with AES-256-GCM and can never be read back. Use this to save API keys for integrations. If the key_name already exists, the value is replaced. For integration setup, prefer setup_integration which handles validation. For production API keys, the Dashboard Vault tab (dashboard.websitepublisher.ai/vault) is the recommended secure alternative — keys go directly to encrypted storage without passing through the AI conversation.

vault_store_secret

ChatGPT
Store or update a secret in the project vault. The value is encrypted with AES-256-GCM and can never be read back. Use this to save API keys for integrations. If the key_name already exists, the value is replaced. For integration setup, prefer setup_integration which handles validation. For production API keys, the Dashboard Vault tab (dashboard.websitepublisher.ai/vault) is the recommended secure alternative — keys go directly to encrypted storage without passing through the AI conversation.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

118

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily