
Lindo AI
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.
- tools
- 52
- auth
- Secret needed
- transport
- STDIO, HTTP
- env var
- 1
- last updated
- Jun 29, 2026
Tools
52 toolsPublic 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 params
Update workspace-level settings. Only provided fields are changed.
business_namestringdefault_currencystringlanguagestringget_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 params
Invite 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...
emailstringrolestringTeamremove_workspace_team_memberRemove a team member from the workspace. Revokes their access.1 params
Remove 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 params
Create 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...
emailstringnamestringphonestringlist_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 params
List 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 params
Update fields on an existing client. Only provided fields are changed.
emailstringnamestringphonestringrecord_idstringdelete_clientDelete a client. This cannot be undone.1 params
Delete a client. This cannot be undone.
record_idstringassign_websiteAssign an existing website to a client (grants them access).2 params
Assign 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 params
Generate 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 params
Start 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.
client_emailstringclient_idstringclient_namestringpromptstringschedule_atstringlist_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 params
List 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 params
Get full details for a single website (business info, theme, domain, activation state).
website_idstringupdate_websiteUpdate a website's business name and/or description.3 params
Update a website's business name and/or description.
business_descriptionstringbusiness_namestringrecord_idstringdelete_websiteDelete a website. This cannot be undone.1 params
Delete a website. This cannot be undone.
record_idstringupdate_website_settingsUpdate structured website settings (business info, theme, robots.txt, socials, custom header/footer code).2 params
Update 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 params
Attach 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 params
Remove 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 params
List collaborators with access to a specific website.
website_idstringget_website_analyticsGet analytics (visits, traffic sources, top pages) for a website.1 params
Get 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 params
Start 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.
promptstringschedule_atstringwebsite_idstringlist_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 params
List 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 params
Get details for a single page.
page_idstringwebsite_idstringupdate_pageUpdate page metadata (display name, URL path, SEO). Only provided fields change.5 params
Update page metadata (display name, URL path, SEO). Only provided fields change.
namestringpage_idstringpathstringseoobjectwebsite_idstringdelete_pageDelete a page. This cannot be undone.2 params
Delete 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 params
Publish 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.
page_contentstringpage_titlestringpathstringwebsite_idstringupdate_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 params
Replace the HTML content of an existing page. This overwrites the previous HTML entirely; the prior content is not preserved. Optionally updates SEO metadata.
page_contentstringpage_idstringseoobjectwebsite_idstringunpublish_pageUnpublish a page so it is no longer publicly accessible.2 params
Unpublish a page so it is no longer publicly accessible.
page_idstringwebsite_idstringget_page_htmlReturn the raw HTML of a page.2 params
Return 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 params
Start 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.
promptstringschedule_atstringwebsite_idstringpublish_blogPublish a new markdown blog post at a given path.8 params
Publish a new markdown blog post at a given path.
authorstringblog_contentstringcategorystringexcerptstringpage_titlestringpathstringpublish_datestringwebsite_idstringlist_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 params
List 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 params
Get details for a single blog post.
blog_idstringwebsite_idstringupdate_blogUpdate blog post metadata (name, path, SEO).5 params
Update blog post metadata (name, path, SEO).
blog_idstringnamestringpathstringseoobjectwebsite_idstringdelete_blogDelete a blog post. This cannot be undone.2 params
Delete 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 params
Replace 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.
blog_contentstringblog_idstringblog_settingsobjectseoobjectwebsite_idstringunpublish_blogUnpublish a blog post so it is no longer publicly accessible.2 params
Unpublish a blog post so it is no longer publicly accessible.
blog_idstringwebsite_idstringget_blog_htmlReturn the rendered HTML of a blog post.2 params
Return 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 params
Poll 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 params
Poll 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 params
Poll 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 params
Start 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 params
Start 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 params
Start 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 params
Poll 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 params
Poll 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 params
Poll 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 params
Get 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 params
Re-allocate existing workspace-owned Lindo credits to a client. This never purchases credits; it only moves balance you already own.
amountintegerclient_idstringcredit_typestringmonthly · purchased · dailynotesstringsourcestringSponsors
Configuration
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.
Readme
@lindoai/mcp-server
MCP (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.
Setup
Add to your MCP client configuration:
{
"mcpServers": {
"lindo": {
"command": "npx",
"args": ["-y", "@lindoai/mcp-server"],
"env": {
"LINDO_API_KEY": "your_api_key_here"
}
}
}
}
Where to add this config
| 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 |
Details
- Repository
- github.com/lindoai/mcp-server
- Website
- lindo.ai
- Package
@lindoai/mcp-server- Transport
- STDIO, HTTP
- Auth
- Required
- Registry
- MCP registry, active