Productivity
Overview
Work with your business in BunnyOwn: list websites, read and edit draft pages and blog posts, manage entities and photos, review SEO audits, inspect availability, and manage booking workflows and message templates. Publishing and booking changes require the corresponding workspace permissions. An existing BunnyOwn account and workspace membership are required. Each connection accesses one workspace selected during sign-in; connect again to work with another workspace. Your membership and permissions are checked on every tool call. This plugin does not expose guest identity documents or payment credentials.
Tools
Change which published workflow handles future website booking requests for one entity type in the selected workspace. workflowId must name a process already published in that workspace; an empty string removes the binding. Replaces the previous binding without changing existing workflow instances. Does not create a booking, start an instance, or send messages. Requires both content:model and workflows:write.
block_dates
ChatGPTAdds a confirmed block or booking on an entity of a bookable type: from the first night (inclusive) to the checkout day (exclusive), or a timed span given as UTC instants (a sitting). Refused naming the clash when the dates are taken; quantity and resource apply to slot and event types, and seats (several named seats of an event, one row each, all or nothing) to events with a seat plan.
close: true writes a closure instead: nobody can book the span on any mode, whatever the capacity; it is refused naming the confirmed or paid bookings in the way, and removing it reopens the dates. Rebuilds the workspace’s websites.create_author
ChatGPTAdds an author: a name and, optionally, a photo from the media library.
create_entity
ChatGPTCreates an entity of a type with its attributes (see get_entity_type for the schema). Validated by the type; refused naming the property. Publishing is a separate step.
create_entity_type
ChatGPTDefines a new entity type: a slug, a localised name, properties (name, kind, required?, localized?, width? — 1|2|3 form cells or row, options?), optional site roles { title?, image?, summary?, hidden?, screen? — true makes it a kiosk screen type, shown only at /screen/<key>/ } and an optional booking block { mode: stay|slots|event|tour, unit?, capacity?, resources?, resourceCapacity?, minStay?, price?, seasons?, tiers?, departures?, extras?, workflow?, crew? } naming properties —
tiers (slots, event, tour; replaces price) and extras (any mode) are lists of a text label and a money price, an extra optionally with a choice unit for per night/day/hour; departures (tour, or stay by the hour) a list of HH:mm times; crew names another bookable type whose entities a booking holds one of (a skipper). Refused with the property named when invalid.create_page
ChatGPTCreates a draft page. Localised fields are maps of language code to text;
sections is the list a sections site renders (see get_content_model); publishing is a separate step.create_post
ChatGPTCreates a draft blog post. Publishing is a separate step.
create_tag
ChatGPTAdds a tag to one website’s blog: a slug and a name per language.
delete_entity
ChatGPTRemoves an entity and its publications.
delete_entity_type
ChatGPTRemoves a type that has no entities and that no other type references.
delete_page
ChatGPTDeletes a page. A draft goes at once. For a published or scheduled one the first call deletes nothing and says what would go; a second call with confirm: true deletes it.
delete_post
ChatGPTDeletes a blog post. A draft goes at once. For a published or scheduled one the first call deletes nothing and says what would go; a second call with confirm: true deletes it.
delete_tag
ChatGPTRemoves a tag from a website and from every post that carries it. Posts themselves are untouched.
generate_indexnow_key
ChatGPTStores an IndexNow key for one website and rebuilds it; the key file and the ping to search engines arrive with that build. A website that already has a key keeps it — nothing is written or rebuilt.
get_content_model
ChatGPTWhat this workspace can hold: the page section vocabulary as JSON Schema, every property kind with its value shape, the social networks, and the company’s entity types with their site roles.
get_entity
ChatGPTOne entity in full, with its publications.
get_entity_type
ChatGPTOne entity type in full, with the JSON Schema its entities’ attributes must satisfy.
get_message_template
ChatGPTOne message in one language: the text in force, whether it is the stock text or the business’s own, the stock text to compare with, and the placeholders it may use with what each stands for. A language without its own text reports
fallback: true — guests get the English one. whatsapp is the message’s WhatsApp text and, per website with a WhatsApp number, whether Meta approved it (null when the message has none); WhatsApp texts are changed and submitted on the dashboard.get_page
ChatGPTOne page in full, including every language of its body.
get_post
ChatGPTOne blog post in full, including every language of its body.
get_seo_audit
ChatGPTThe SEO score of one website, every check with what was found and how to fix it, blog topic ideas from the site’s own content, and whether an IndexNow key is stored.
get_site_settings
ChatGPTThe editorial settings of one website — brand, tagline, hero text, contact details, theme accents, logo, fonts, footer pages — or null when none are stored yet; with the website’s languages (the first is the default) and the template it is built from.
get_stripe_setup
ChatGPTRead-only Stripe integration status and setup instructions for one website in the selected workspace. The live account (top-level fields) and the team's sandbox (
sandbox) each report their state (not_configured, disabled, enabled), test or live mode, whether credentials are saved, the last stored key check (ok, or the permissions the key is missing, named as Stripe's key editor names them) and when Stripe last reached the website's webhook. Also: whether a payment has landed (a paid booking or a membership paid through Stripe), the priced bookable types and the membership plans the website sells, the BunnyOwn integrations page, webhook URL/API version/events, and the setup steps in order — sandbox first — each with help for Stripe's own screen and whether it is done; the first step not done is the next one. A website connected through Stripe Connect reports connection: "connect" and its account id in place of credentials and webhook, and its steps are only testing and turning payments on; a connection revoked in Stripe reports revoked: true and no connection. With nothing set up and Connect available, the first step is "Connect with Stripe". Reads BunnyOwn records only: this tool does not call Stripe, connect an account, change settings, create a payment link, charge, or refund. The person completes setup on the linked dashboard pages. This tool neither accepts nor returns credentials: the secret key, restricted keys and the webhook signing secret are entered only on the BunnyOwn integrations page.get_whatsapp_setup
ChatGPTRead-only WhatsApp Business integration status and setup instructions for one website in the selected workspace. Returns connection state, displayed business number, whether credentials are saved and a WhatsApp message has arrived, the BunnyOwn integrations page, callback URL, connection method, and manual setup steps. Reads BunnyOwn records only: this tool does not call Meta, connect a number, change settings, submit templates, or send messages. The person completes setup on the linked dashboard pages; the one-click path is offered when available, with ownAppSteps as the alternative. This tool neither accepts nor returns credentials: the access token, the app secret and the verify token are entered only on the BunnyOwn integrations page.
get_workflow
ChatGPTOne published version in the engine’s normalized form, with its Mermaid diagram and state names. Omit the version for the latest.
get_workflow_instance
ChatGPTRead one workflow instance belonging to the selected workspace: current state, stored process context, event timeline, and the staff decisions available in its current state. Include the execution trace only when trace is true, for troubleshooting this instance. This read does not advance the process, execute actions, or send messages. Requires workflows:read.
get_workflow_registry
ChatGPTRead the selected workspace’s supported workflow configuration: effect and guard names, argument kinds, staff roles, message template identifiers, and the process-definition format. Use this to understand or edit a stored booking process. Returns configuration data only; it does not execute effects, register MCP tools, or call additional MCP tools.
import_media
ChatGPTAdds a photo to this workspace’s media library from a public https address and returns it with its id — usable as a post’s coverMediaId, in page sections, on an entity or as the logo. The platform fetches the image itself: PNG, JPEG, GIF, WebP or AVIF, at most 10 MB, redirects not followed. Give alternative text in every language of the website it is for.
install_booking_process
ChatGPTInstall BunnyOwn’s predefined booking-request process and message-delivery process in the selected workspace, with their stock message templates, an email profile from the first website’s contact address, and the workspace owners as staff. Uses a fixed platform bundle, not caller-supplied operations or code. Existing definitions and custom message templates are retained; stock templates, the email profile and staff recipients may be updated. Does not create bookings, start workflow instances, or send messages during installation. Requires workflows:write and an existing website.
list_authors
ChatGPTThe people posts can be attributed to, across this workspace’s websites.
list_availability
ChatGPTAn entity’s bookings and blocks touching a date window (end exclusive). Requested rows do not block; confirmed and paid ones do.
list_domains
ChatGPTRead-only list of the domains the selected workspace bought or transferred through BunnyOwn: each with its state (waiting for payment, registering, transfer in progress, active, expired, failed, moved to another registrar), expiry date, whether it renews automatically, the renewal price in euros and the website it is connected to. Cancelled checkouts are left out. Also returns the dashboard page where renewals, connections and transfers are managed. This tool does not renew, transfer, unlock or change a domain.
list_entities
ChatGPTThe company’s entities of one type, each with where it is published.
list_entity_types
ChatGPTThe company’s entity types: slug, localised name, properties and site roles.
list_media
ChatGPTOne page of this workspace’s media library, newest first, with the total that matches.
q matches the filename and the alt text in any language; tag keeps photos carrying it; per_page is at most 96.list_message_templates
ChatGPTThe workspace’s message templates: id, locale, subject, body, decision links, and origin —
stock (the platform’s text, updated by installs) or custom (the business’s own, which installs keep). A guest message that also goes on WhatsApp carries whatsapp: its WhatsApp text in that language and, per website with a WhatsApp number, whether Meta approved it. whatsapp_followup is WhatsApp only (no subject or body). WhatsApp texts are changed and submitted on the dashboard’s Messages screen.list_pages
ChatGPTPages on one website, with their publication status.
list_posts
ChatGPTBlog posts on one website, most recently updated first.
list_tags
ChatGPTThe tags of one website’s blog.
list_websites
ChatGPTEvery website in this workspace, with its languages (the first is the default), domain and the template it is built from; a site-custom website renders the languages its own code decides.
list_workflow_instances
ChatGPTInstances of the workspace’s processes, optionally of one process, in one state, or by status (live, terminal).
list_workflows
ChatGPTThe workspace’s published processes: id, version, how many instances run on each, when published.
preview_message_template
ChatGPTRenders a subject and body with sample booking data, exactly as the engine would, so the result is what a guest would read. Nothing is stored.
publish_entity
ChatGPTPublishes an entity on a website at a position (collections list in position order) and rebuilds this workspace’s websites. Refused if a language the site declares is missing.
publish_page
ChatGPTPublishes a page and rebuilds this workspace’s websites. Refused if a language the site declares is missing.
publish_post
ChatGPTPublishes a blog post and rebuilds this workspace’s websites. Refused if a language the site declares is missing.
publish_workflow
ChatGPTValidate and save a workflow configuration document as the next immutable version of its id in the selected workspace. The server assigns the version and refuses definitions that fail validation. Existing versions and running instances keep their definitions. Saving does not start an instance, dispatch an event, send messages, or execute the definition’s effects. Subsequent booking requests may use this version if the process is bound to an entity type. Requires workflows:write.
put_message_template
ChatGPTWrites a message in the business’s own words (origin
custom: a later install of the booking process keeps it). get_message_template lists the placeholders each message may use, and preview_message_template renders a text without saving it. Placeholders: {context.field}, {subject.name}, {link.event}; decisions become signed action links — omit them to keep the message’s own.remove_booking
ChatGPTDeletes the row. Rebuilds the workspace’s websites.
reset_message_template
ChatGPTPuts the platform’s stock text back for one message in one language, overwriting the business’s own wording. Only the booking process’s own messages have a stock text.
send_workflow_event
ChatGPTApply one staff decision offered by an existing workflow instance in the selected workspace, recorded as the authenticated user. The server checks that event is currently offered by that instance and refuses other events, including fabricated system or payment events. The stored workflow determines the resulting transition and effects: these may change booking status or send configured guest/staff notifications. A decision whose transition would refund a payment is refused: refunds are made only on the BunnyOwn dashboard. A stable key makes a retry apply the decision only once. Requires workflows:write.
set_booking_status
ChatGPTMoves a booking through its lifecycle; confirming checks the dates like a new booking. Rebuilds the workspace’s websites.
expired retires a request that lapsed unanswered ("Outdated"): only a requested row, never a paid one; the record is kept, it is final, the guest is never told and nothing is rebuilt.set_media_alt
ChatGPTSets the alternative text of a media item, per language.
unpublish_entity
ChatGPTTakes an entity off a website and rebuilds this workspace’s websites.
unpublish_page
ChatGPTReturns a page to draft and rebuilds this workspace’s websites without it. Also cancels a scheduled publication.
unpublish_post
ChatGPTReturns a blog post to draft and rebuilds this workspace’s websites without it. Also cancels a scheduled publication.
update_author
ChatGPTChanges an author’s name or photo; a null photo removes it.
update_entity
ChatGPTChanges an entity’s slug or attributes. Attributes replace the stored ones as a whole and are validated by the type.
update_entity_type
ChatGPTChanges a type’s name, properties or site roles. A property that stored values still carry cannot be removed or re-kinded; the refusal says how many entities carry it.
update_page
ChatGPTChanges any subset of a page’s fields,
sections included. Does not publish it.update_post
ChatGPTChanges any subset of a post’s fields. Does not publish it.
update_site_settings
ChatGPTChanges any subset of a website’s editorial settings; the rest stay as stored. Validated like the dashboard’s settings screen. Does not rebuild: the change goes live with the next publish. A website with no settings yet needs brand, tagline, heroTitle, heroSubtitle and email in its first update (whatsapp and phoneDisplay are optional).
languages replaces the website’s language list (the first is the default); the answer then names the published pages, posts and entities missing a language — each must be translated (update it with every language) and published again before that language shows it. On a site-custom website its own build also decides which languages render.validate_workflow
ChatGPTChecks a definition (JSON form: { id, version, context, initial, states }) against the workspace’s registry; every finding at once. Nothing is published.
Capabilities
Writes
Example Prompts
Click any prompt to copy it.






