MCP App Store
by KeenEthics
Creativity
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.

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.

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_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_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_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".

delete_asset

ChatGPT
Delete an asset

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_page

ChatGPT
Delete a page

delete_record

ChatGPT
Delete a record by ID

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.

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_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_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_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_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_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_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_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_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_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_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_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_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_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_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.

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.

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_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_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.

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_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.

Example Prompts

Click any prompt to copy it.

App Stats

59

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily