Connect your AI (MCP)
Tools reference
Every tool the cnvrtlocal MCP server offers, what it does and which permission it needs.
On this page
These are the tools your AI app can use. You don't call them yourself. Your AI app picks the right one when you ask for something.
Every tool works inside the one workspace you approved. Anything outside it, like another workspace's site, answers "not found".
Read
Needs See your workspace (always on) unless noted.
| Tool | What it does |
|---|---|
whoami | Shows your workspace, plan, AI credits left, permissions and connection name. The AI is told to run this first. |
list_businesses | Lists the businesses saved in your workspace. |
find_business | Looks up a business on Google from a Maps link, or a name plus city. Can also read the listing and website for services, phone and hours. |
list_sites | Lists your sites with status (draft or live), type and public address. |
get_site | Shows one site: its pages, publish state, domain and editor link. |
list_leads | Shows recent form submissions for a site. Needs Read leads. |
get_analytics | Shows visitors, pageviews, top pages, referrers and conversions. Locked on the Free plan. |
list_blog_posts | Lists blog posts, whether each is still being written, and when a scheduled post will publish (scheduled_at). |
list_sections | Shows each page's sections in order, with the section id, type, order, whether it's shown, the editable fields with their current values, and each image spot in the section (images) with the image it shows now. Pass page_id to see one page. Header and footer copies on inner pages point to the home page section to edit. |
list_section_types | For one page, lists every kind of section in the usual page order: whether it can be added (and why not), whether a new one starts from the home page's copy or from sample text, and its fields and image spots. |
list_images | Lists the images in a site's media library (not videos), with an asset_id, address, alt text, size and where it came from. See Images. |
list_approvals | Lists recent approval requests and their status. |
get_approval_status | Shows one approval request, including whether it expired. |
Drafts
Needs Create drafts. These use the same plan limits, monthly quotas and AI budgets as the editor, and only save drafts.
| Tool | What it does |
|---|---|
build_site | Builds an ad funnel or SEO website from a saved business, a Google place or a website address. Runs in the background. Respects your plan's site limit. SEO websites need a paid plan. |
get_build_status | Shows progress of a build, a new page or an AI image. When it's done you get the editor link, or for an AI image its asset_id. If it's waiting on you, you get the approval link. |
draft_blog_post | Writes a blog post as a draft. It's never published this way. To publish it later, see Scheduling blog posts. |
add_page | Writes a new page for an SEO website, like about, services, service area or contact. Paid plans only. On a draft site the page is saved. On a live site it becomes an approval request. |
update_section | Changes one section's text, links, button labels, list items (FAQ questions and answers, services, service areas) or colours. You can change just the fields you name, and add, remove, reorder or replace list items. Returns a before and after list of what changed. Needs the same permission as add_page. On a draft site the edit is saved. On a live site it becomes an approval request. See Editing sections. |
add_section | Adds a new section to a page. Can also set its wording (fields) and images (images). Passing images needs Add images. See Adding, moving and removing sections. |
move_section | Moves a section to just after or just before another section on the page. |
set_section_visibility | Shows or hides a section without deleting it. Can hide it on phones only. |
remove_section | Deletes a section, the same way the builder does. There is no undo. The removed content is returned in the result. |
update_business | Corrects saved business details like name, phone, hours and services. Same checks as the settings page. |
Editing sections
To change the words on an existing page, your AI app first runs list_sections, then update_section with the section ids and field names it got back. Needs Create drafts.
- Unknown fields are rejected. The error lists the fields that section does accept.
- List items can be changed too. For a list like FAQ items, services or service areas, your AI sends either a list of item edits (each one names the item by its
idorindexfromlist_sections), or one of these:{ edit, remove, order, add }, applied in that order.editchanges items,removetakes items out,ordergives the remaining items in their new order, andaddadds new items, each with an optional position (at).{ replace }on its own, which swaps in a whole new list.
- New items follow the builder. They start from the builder's new-item defaults with the sample text cleared, so your AI has to give the required text. Each list keeps the builder's maximum, for example 12 FAQs or 5 process steps. Process steps are renumbered. Lists the builder has no add button for, like header navigation, can only be edited.
- Images have their own tools. Image spots are rejected here and the AI is pointed to
set_section_image. Video, layout, reviews, legal page bodies and custom code are rejected too, and the AI is pointed to the editor. See Images. - Text can't contain
<or>. - Links must be one of these:
https://, a path on your site, a#anchor,tel:ormailto:. - Draft sites save straight away. If the site changed in the meantime, you get a conflict error instead of the edit overwriting it.
- Live sites wait for you. Nothing changes until you approve. See Approvals.
Example: ask "Add a question to the FAQ on my plumber's home page about call-out fees." Your AI finds the FAQ section with list_sections, then calls update_section with the FAQ items and an add entry holding the question and answer.
Not supported yet
- Video, layout variants, reviews and footer link groups
- Header menu sub-menus
- Phone-only text overrides
- Blog index sections
- Page SEO titles and legal page bodies
Bold or linked text becomes plain text when it's edited this way.
Adding, moving and removing sections
Your AI can change the structure of a page, not just the words in it. These tools need Create drafts.
| Tool | Inputs |
|---|---|
add_section | page_id, type, optionally where it goes (after_section_id or before_section_id), fields and images |
move_section | page_id, section_id, and after_section_id or before_section_id |
set_section_visibility | page_id, section_id, visible, and optionally device: all (the eye in the builder) or mobile (hide or show on phones only) |
remove_section | page_id, section_id |
list_section_types tells your AI which type values it can use on a page. If you might want a section back, ask your AI to hide it instead, because remove_section can't be undone.
Rules, the same as the builder's:
- Header and footer can't be added, moved, hidden or removed. They're shared by every page. Edit their text with
update_section, and set the logo withset_section_image. - Only CTA banners can appear more than once on a page.
- The hero always sits right under the header. Nothing can go above it or below the footer.
- Privacy and terms pages take no new sections. Legal text and the blog listing can't be added or removed.
- Custom code sections can only be added in the editor.
- Where a new section starts. On an inner page it starts with the home page's copy when the home page has that section. Otherwise it starts with the builder's sample content, and a new reviews section is filled from the business's Google reviews if it has some.
fieldstakes the same names and formats asupdate_section.
How it behaves:
- Draft sites change straight away. If the site changed in the meantime, you get a conflict error instead of an overwrite.
- Live sites wait for you. Each change creates an approval request. The Approvals page shows the page's section outline before and after, with the new, moved or removed section marked. See Approvals.
- Sample text. The result lists any fields that still hold sample text, like lorem ipsum, sample contact details or a list item left as it was. On a draft site the section is saved and your AI is told to fill those in. On a live site the request is refused until they're filled in, so your live page never shows made-up details.
Example: "Add a CTA banner after the hero, move it below the FAQ, and hide it on phones."
Images
Your AI can put images on a site in three ways: reuse one from the media library, upload one from a link, or make a new one with AI. Then it places the image in a section.
| Tool | What it does |
|---|---|
list_images | Lists the images in a site's media library. Needs See your workspace (always on). |
upload_image | Downloads an image from an https:// link into a site's media library. It changes no page, so it works the same on draft and live sites. Needs Add images. |
generate_image | Makes one AI image in a site's media library, in the background. It takes prompt and optionally aspect, style and alt. Your AI checks on it with get_build_status, which returns the new image's asset_id. It uses your AI quota and image AI budget, like the editor. Needs Add images. |
set_section_image | Puts an image in a section's image spot. Needs Add images. |
set_section_image takes page_id, section_id, slot, optionally item_id, index, append, then either asset_id (an image from the media library) or image_url, and optionally alt and device.
Image spots (slot):
logo: the logo in the header and footer, for computers and phones alike.media: the featured image of the hero, about, why choose us, and the CTA banner's split layout.featured: the featured image of services.item: a service card or a past work photo, picked withitem_idorindex. For past work,append: trueadds a new photo (up to 20).background: the background of any content section.
Setting an image also switches the section to show it. Use device: "mobile" to set an image for phones only, like the builder's phone view. Alt text is needed except for backgrounds, and falls back to the library image's alt text. In a new past work gallery, photos added with append replace the sample photos.
Where images can come from:
asset_idis an image from this site's media library. Videos and other sites' images are refused.image_urlis downloaded and stored as a new upload in your site's own storage. If it's already a file of this site's, the existing one is reused.
Rules for links:
- The link must be
https://. Redirects are checked, and links to private or internal addresses are refused. - The image is copied into your site's own storage. It's never hotlinked, so it keeps working if the original goes away.
- Up to 10 MB, and the download gives up after 15 seconds.
- PNG, JPEG, WebP, GIF or AVIF only, checked from the file itself and between 16 and 8,000 pixels a side. SVG isn't accepted.
Draft and live. On a draft site setting an image is saved straight away. On a live site it becomes an approval request, and the Approvals page shows the old and new image side by side. On approval it fails and changes nothing if the spot now shows a different image than when your AI asked.
Examples: "Use this photo as the hero image: https://example.com/van.jpg (opens in a new tab)", or "Generate a picture of a plumber fixing a sink and use it in the About section."
If your app was connected before Add images existed, the image tools tell you to reconnect. See Permissions.
Scheduling blog posts
schedule_blog_posts lets your AI line up several drafts to publish on set dates. Nothing is scheduled until you approve it.
- Call it with a site and a list of posts. Each post has a
post_idand apublish_attime. Send 1 to 31 posts at a time. - Times must be in the future and include a timezone offset, for example
2026-11-03T09:00:00-05:00. - One bad post refuses the whole call. You get each reason: the post is on another site, already published, still being written, failed to write, missing a title or content, set to a past time, or listed twice.
- A valid batch changes nothing yet. It creates one approval request and returns the approval id and link. See Approvals.
- Draft sites work too. Scheduling still needs approval, but the posts only show publicly once the site is live.
- To change your mind,
unschedule_blog_postmoves a scheduled post back to draft straight away. It doesn't need approval.
A suggested monthly routine:
- Ask your AI to write each post. It calls
draft_blog_postfor every one. - Wait until
list_blog_postsshowswriting: falsefor all of them. - Ask your AI to schedule the month. It makes one
schedule_blog_postscall. - Approve the request in cnvrtlocal.
Go live
These need a person to approve, except where noted. See Approvals.
| Tool | What it does |
|---|---|
publish_site | Creates a request to publish. The AI hands you an approval link. Needs Ask to publish. |
connect_domain | Creates a request to connect a custom domain (paid plans). Clashes with domains already in use are caught up front. After you approve, you see the DNS records to add. Needs Ask to publish. |
schedule_blog_posts | Creates one request to publish up to 31 drafted blog posts at set future times. Nothing is scheduled until you approve. See Scheduling blog posts. |
unschedule_blog_post | Moves a scheduled blog post back to draft straight away. No approval needed. |
export_leads | Returns a site's leads as a CSV. Paid plans only. Needs Read leads. |
Good to know
- If you edit a section's text with your AI, bold or linked text in it becomes plain text.
add_pagecan't make a custom page type yet. Use the editor for that.- Changes to a live site are checked again when you approve. If that part of the page was edited since the request was made, the approval fails instead of overwriting it. Ask your AI to try again.
- Your AI can't add custom code sections, change a section's layout, set a background colour or video, or crop or edit an image. The wording for a new section comes from your AI in
fields. cnvrtlocal doesn't write it. - If you have the editor open on a site while your AI changes it, reload the tab. Otherwise the editor can save over the AI's change.