Connects Claude and other MCP clients directly to the Lindo AI platform for building and managing AI-generated websites. You get tools to create sites from prompts, add pages, publish blog posts with markdown, and handle client management including magic link generation and credit allocation. Scheduling support lets you queue website and content creation workflows for future execution via ISO 8601 timestamps. Requires a Business or Whitelabel Lindo plan and runs via npx or their hosted remote endpoint at mcp.lindo.ai. Useful if you're running a web agency or managing multiple client sites and want to automate site creation and content publishing without leaving your editor or chat interface.
Public tool metadata for what this MCP can expose to an agent.
get_workspaceGet details about the current Lindo AI workspace (business name, plan, language, integrations).Get details about the current Lindo AI workspace (business name, plan, language, integrations).
No parameter schema in public metadata yet.
update_workspaceUpdate workspace-level settings. Only provided fields are changed.3 paramsUpdate workspace-level settings. Only provided fields are changed.
languagestringbusiness_namestringdefault_currencystringget_workspace_analyticsGet aggregated analytics across all websites in the workspace.Get aggregated analytics across all websites in the workspace.
No parameter schema in public metadata yet.
get_workspace_teamList workspace team members (owners, team collaborators).List workspace team members (owners, team collaborators).
No parameter schema in public metadata yet.
add_workspace_team_memberInvite a new team member to this Lindo workspace. Creates a team record and sends a transactional invitation email from Lindo to the provided address. The email contains a link to accept the invite and join the workspace. It is not a marketing or cold email; the tool should on...2 paramsInvite a new team member to this Lindo workspace. Creates a team record and sends a transactional invitation email from Lindo to the provided address. The email contains a link to accept the invite and join the workspace. It is not a marketing or cold email; the tool should on...
rolestringTeamemailstringremove_workspace_team_memberRemove a team member from the workspace. Revokes their access.1 paramsRemove a team member from the workspace. Revokes their access.
member_idstringcreate_clientCreate a new client record in the workspace. Only "name" is strictly required; if "email" is omitted, a placeholder address is generated so the record can be created. This tool does not send any email — use generate_magic_link separately if you need to share login access with...3 paramsCreate a new client record in the workspace. Only "name" is strictly required; if "email" is omitted, a placeholder address is generated so the record can be created. This tool does not send any email — use generate_magic_link separately if you need to share login access with...
namestringemailstringphonestringlist_clientsList clients in the workspace, paginated. Returns a `{ list, total }` result where `list` holds up to 12 items. Use `total` (the true, filter-aware count) with the `page` argument to fetch additional pages.2 paramsList clients in the workspace, paginated. Returns a `{ list, total }` result where `list` holds up to 12 items. Use `total` (the true, filter-aware count) with the `page` argument to fetch additional pages.
pageintegersearchstringupdate_clientUpdate fields on an existing client. Only provided fields are changed.4 paramsUpdate fields on an existing client. Only provided fields are changed.
namestringemailstringphonestringrecord_idstringdelete_clientDelete a client. This cannot be undone.1 paramsDelete a client. This cannot be undone.
record_idstringassign_websiteAssign an existing website to a client (grants them access).2 paramsAssign an existing website to a client (grants them access).
client_idstringwebsite_idstringgenerate_magic_linkGenerate a short-lived magic login link for a client. The link authenticates the client into the Lindo app without a password and expires automatically.1 paramsGenerate a short-lived magic login link for a client. The link authenticates the client into the Lindo app without a password and expires automatically.
client_idstringcreate_websiteStart an AI-generated website workflow. This is asynchronous — the tool returns a `record_id` immediately. Poll `check_website_status` with that `record_id` to track progress and get the final result. Optionally assigns the website to an existing or new client.5 paramsStart an AI-generated website workflow. This is asynchronous — the tool returns a `record_id` immediately. Poll `check_website_status` with that `record_id` to track progress and get the final result. Optionally assigns the website to an existing or new client.
promptstringclient_idstringclient_namestringschedule_atstringclient_emailstringlist_websitesList websites in the workspace, paginated. Returns a `{ list, total }` result where `list` holds up to 12 items. Use `total` (the true, filter-aware count) with the `page` argument to fetch additional pages.2 paramsList websites in the workspace, paginated. Returns a `{ list, total }` result where `list` holds up to 12 items. Use `total` (the true, filter-aware count) with the `page` argument to fetch additional pages.
pageintegersearchstringget_websiteGet full details for a single website (business info, theme, domain, activation state).1 paramsGet full details for a single website (business info, theme, domain, activation state).
website_idstringupdate_websiteUpdate a website's business name and/or description.3 paramsUpdate a website's business name and/or description.
record_idstringbusiness_namestringbusiness_descriptionstringdelete_websiteDelete a website. This cannot be undone.1 paramsDelete a website. This cannot be undone.
record_idstringupdate_website_settingsUpdate structured website settings (business info, theme, robots.txt, socials, custom header/footer code).2 paramsUpdate structured website settings (business info, theme, robots.txt, socials, custom header/footer code).
settingsobjectwebsite_idstringadd_custom_domainAttach a custom domain to a website (user is responsible for DNS configuration).2 paramsAttach a custom domain to a website (user is responsible for DNS configuration).
domainstringwebsite_idstringremove_custom_domainRemove the custom domain from a website. The site reverts to its default Lindo subdomain.1 paramsRemove the custom domain from a website. The site reverts to its default Lindo subdomain.
website_idstringget_website_teamList collaborators with access to a specific website.1 paramsList collaborators with access to a specific website.
website_idstringget_website_analyticsGet analytics (visits, traffic sources, top pages) for a website.1 paramsGet analytics (visits, traffic sources, top pages) for a website.
website_idstringcreate_pageStart an AI-generated page workflow for an existing website. This is asynchronous — the tool returns a `record_id` immediately. Poll `check_page_status` with that `record_id` to track progress and get the final result.3 paramsStart an AI-generated page workflow for an existing website. This is asynchronous — the tool returns a `record_id` immediately. Poll `check_page_status` with that `record_id` to track progress and get the final result.
promptstringwebsite_idstringschedule_atstringlist_pagesList pages on a website, paginated. Returns a `{ list, total }` result where `list` holds up to 12 items. Use `total` (the true, filter-aware count) with the `page` argument to fetch additional pages. Only pages created via the API/SDK are returned.3 paramsList pages on a website, paginated. Returns a `{ list, total }` result where `list` holds up to 12 items. Use `total` (the true, filter-aware count) with the `page` argument to fetch additional pages. Only pages created via the API/SDK are returned.
pageintegersearchstringwebsite_idstringget_pageGet details for a single page.2 paramsGet details for a single page.
page_idstringwebsite_idstringupdate_pageUpdate page metadata (display name, URL path, SEO). Only provided fields change.5 paramsUpdate page metadata (display name, URL path, SEO). Only provided fields change.
seoobjectnamestringpathstringpage_idstringwebsite_idstringdelete_pageDelete a page. This cannot be undone.2 paramsDelete a page. This cannot be undone.
page_idstringwebsite_idstringpublish_pagePublish a static HTML page at a given path. If a page already exists at that path it will be OVERWRITTEN — any existing content is replaced.4 paramsPublish a static HTML page at a given path. If a page already exists at that path it will be OVERWRITTEN — any existing content is replaced.
pathstringpage_titlestringwebsite_idstringpage_contentstringupdate_page_contentReplace the HTML content of an existing page. This overwrites the previous HTML entirely; the prior content is not preserved. Optionally updates SEO metadata.4 paramsReplace the HTML content of an existing page. This overwrites the previous HTML entirely; the prior content is not preserved. Optionally updates SEO metadata.
seoobjectpage_idstringwebsite_idstringpage_contentstringunpublish_pageUnpublish a page so it is no longer publicly accessible.2 paramsUnpublish a page so it is no longer publicly accessible.
page_idstringwebsite_idstringget_page_htmlReturn the raw HTML of a page.2 paramsReturn the raw HTML of a page.
page_idstringwebsite_idstringcreate_blogStart an AI-generated blog post workflow for an existing website. This is asynchronous — the tool returns a `record_id` immediately. Poll `check_blog_status` with that `record_id` to track progress and get the final result.3 paramsStart an AI-generated blog post workflow for an existing website. This is asynchronous — the tool returns a `record_id` immediately. Poll `check_blog_status` with that `record_id` to track progress and get the final result.
promptstringwebsite_idstringschedule_atstringpublish_blogPublish a new markdown blog post at a given path.8 paramsPublish a new markdown blog post at a given path.
pathstringauthorstringexcerptstringcategorystringpage_titlestringwebsite_idstringblog_contentstringpublish_datestringlist_blogsList blog posts on a website, paginated. Returns a `{ list, total }` result where `list` holds up to 12 items. Use `total` (the true, filter-aware count) with the `page` argument to fetch additional pages. Only blog posts created via the API/SDK are returned.3 paramsList blog posts on a website, paginated. Returns a `{ list, total }` result where `list` holds up to 12 items. Use `total` (the true, filter-aware count) with the `page` argument to fetch additional pages. Only blog posts created via the API/SDK are returned.
pageintegersearchstringwebsite_idstringget_blogGet details for a single blog post.2 paramsGet details for a single blog post.
blog_idstringwebsite_idstringupdate_blogUpdate blog post metadata (name, path, SEO).5 paramsUpdate blog post metadata (name, path, SEO).
seoobjectnamestringpathstringblog_idstringwebsite_idstringdelete_blogDelete a blog post. This cannot be undone.2 paramsDelete a blog post. This cannot be undone.
blog_idstringwebsite_idstringupdate_blog_contentReplace the markdown content of an existing blog post. This overwrites the previous markdown entirely; the prior content is not preserved. Optionally updates SEO and blog settings.5 paramsReplace the markdown content of an existing blog post. This overwrites the previous markdown entirely; the prior content is not preserved. Optionally updates SEO and blog settings.
seoobjectblog_idstringwebsite_idstringblog_contentstringblog_settingsobjectunpublish_blogUnpublish a blog post so it is no longer publicly accessible.2 paramsUnpublish a blog post so it is no longer publicly accessible.
blog_idstringwebsite_idstringget_blog_htmlReturn the rendered HTML of a blog post.2 paramsReturn the rendered HTML of a blog post.
blog_idstringwebsite_idstringcheck_website_statusPoll the status of a website-creation workflow started by `create_website`. Pass the `record_id` you received from that tool. While the workflow is running, call this tool again after `poll_after_ms` milliseconds. Once `done` is true, `status` is `complete` (all pages generate...1 paramsPoll the status of a website-creation workflow started by `create_website`. Pass the `record_id` you received from that tool. While the workflow is running, call this tool again after `poll_after_ms` milliseconds. Once `done` is true, `status` is `complete` (all pages generate...
record_idstringcheck_page_statusPoll the status of a page-creation workflow started by `create_page`. Pass the `record_id` you received from that tool. While the workflow is running, call this tool again after `poll_after_ms` milliseconds. Once `done` is true, `status` is `complete` or `errored`; when comple...1 paramsPoll the status of a page-creation workflow started by `create_page`. Pass the `record_id` you received from that tool. While the workflow is running, call this tool again after `poll_after_ms` milliseconds. Once `done` is true, `status` is `complete` or `errored`; when comple...
record_idstringcheck_blog_statusPoll the status of a blog-creation workflow started by `create_blog`. Pass the `record_id` you received from that tool. While the workflow is running, call this tool again after `poll_after_ms` milliseconds. Once `done` is true, `status` is `complete` or `errored`; when comple...1 paramsPoll the status of a blog-creation workflow started by `create_blog`. Pass the `record_id` you received from that tool. While the workflow is running, call this tool again after `poll_after_ms` milliseconds. Once `done` is true, `status` is `complete` or `errored`; when comple...
record_idstringbatch_create_websitesStart up to 25 website-creation workflows in one request. Returns one `record_id` per item. Poll the combined status with `batch_check_website_status`, or the individual statuses with `check_website_status`.1 paramsStart up to 25 website-creation workflows in one request. Returns one `record_id` per item. Poll the combined status with `batch_check_website_status`, or the individual statuses with `check_website_status`.
itemsarraybatch_create_pagesStart up to 25 page-creation workflows on a single website in one request. Returns one `record_id` per item. Poll with `batch_check_page_status` or `check_page_status`.2 paramsStart up to 25 page-creation workflows on a single website in one request. Returns one `record_id` per item. Poll with `batch_check_page_status` or `check_page_status`.
itemsarraywebsite_idstringbatch_create_blogsStart up to 25 blog-creation workflows on a single website in one request. Returns one `record_id` per item. Poll with `batch_check_blog_status` or `check_blog_status`.2 paramsStart up to 25 blog-creation workflows on a single website in one request. Returns one `record_id` per item. Poll with `batch_check_blog_status` or `check_blog_status`.
itemsarraywebsite_idstringbatch_check_website_statusPoll up to 25 website-creation workflows at once. Returns a rollup `status` (scheduled/running/complete/partial/errored) plus a per-item array with the same shape as `check_website_status`.1 paramsPoll up to 25 website-creation workflows at once. Returns a rollup `status` (scheduled/running/complete/partial/errored) plus a per-item array with the same shape as `check_website_status`.
record_idsarraybatch_check_page_statusPoll up to 25 page-creation workflows at once. Returns a rollup `status` plus a per-item array with the same shape as `check_page_status`.1 paramsPoll up to 25 page-creation workflows at once. Returns a rollup `status` plus a per-item array with the same shape as `check_page_status`.
record_idsarraybatch_check_blog_statusPoll up to 25 blog-creation workflows at once. Returns a rollup `status` plus a per-item array with the same shape as `check_blog_status`.1 paramsPoll up to 25 blog-creation workflows at once. Returns a rollup `status` plus a per-item array with the same shape as `check_blog_status`.
record_idsarrayget_creditsGet the workspace's current Lindo credit balance and utilization.Get the workspace's current Lindo credit balance and utilization.
No parameter schema in public metadata yet.
get_client_creditsGet the credit balance allocated to a specific client.1 paramsGet the credit balance allocated to a specific client.
client_idstringallocate_creditsRe-allocate existing workspace-owned Lindo credits to a client. This never purchases credits; it only moves balance you already own.5 paramsRe-allocate existing workspace-owned Lindo credits to a client. This never purchases credits; it only moves balance you already own.
notesstringamountintegersourcestringclient_idstringcredit_typestringmonthly · purchased · dailyMCP (Model Context Protocol) server for Lindo AI — create websites, pages, and blog posts with AI directly from Claude, Cursor, Kiro, Windsurf, and other MCP-compatible tools.
Listed in the official MCP Registry as io.github.lindoai/mcp-server.
Add to your MCP client configuration:
{
"mcpServers": {
"lindo": {
"command": "npx",
"args": ["-y", "@lindoai/mcp-server"],
"env": {
"LINDO_API_KEY": "your_api_key_here"
}
}
}
}
| Client | Config file |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) |
| Claude Code | .claude/settings.json |
| Cursor | .cursor/mcp.json |
| Kiro | .kiro/settings/mcp.json |
| Windsurf | MCP settings in IDE |
LINDO_API_KEYRequires a Business or Whitelabel plan.
The create_website, edit_website, and create_blog tools support an optional schedule_at parameter (ISO 8601 datetime) to schedule the workflow for a future time.
You can also connect via the remote MCP endpoint without installing anything:
https://mcp.lindo.ai/mcp
LINDO_API_KEY*secretLindo AI API key. Create one at https://app.lindo.ai under Workspace Settings → API Keys. Requires a Business or Whitelabel plan.