mcp-lindoai
OfficialManage Lindo AI workspaces, clients, websites, pages, blogs, team access, domains, analytics, and credits, including AI-powered content generation/editing and async/batch workflows.
Workspace: view/update details, analytics, team members, and credit balance.
Clients: create/list/update/delete clients, assign websites, generate magic login links, view and allocate credits.
Websites: AI-create/edit from prompts, list/get/update/delete, update settings, add/remove custom domains, view team/analytics, schedule and poll workflow status, and batch-create/check up to 25 websites.
Pages: list/get/update metadata, delete, publish static HTML, update/unpublish content, and get page HTML.
Blogs: AI-create from prompts, publish static markdown, list/get/update/delete, update content/metadata, unpublish, get HTML, schedule/poll workflow status, and batch-create/check up to 25 blog posts.
Async workflows: poll website creation, website edit, blog creation, and batch workflow statuses using workflow IDs.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
@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 |
|
Claude Code |
|
Cursor |
|
Kiro |
|
Windsurf | MCP settings in IDE |
Getting your API key
Go to app.lindo.ai
Navigate to Workspace Settings → API Keys
Create a new API key
Copy the key and paste it as
LINDO_API_KEY
Requires a Business or Whitelabel plan.
Related MCP server: web2md-mcp
Available Tools
Websites
create_website — Create a new website using AI from a text prompt
list_websites — List all websites in your workspace
Pages
edit_website — Edit an existing website (across its pages) using AI
Blog
create_blog — Generate a blog post on a website using AI
publish_blog — Publish a static blog post with markdown content, featured image and author image
update_blog — Change a post's featured image, author, author image, category, excerpt or date without touching its content
get_blog_html — Read a post's current content, SEO and settings
update_blog_content — Replace a post's content
Clients
create_client — Create a new client
list_clients — List all clients
assign_website — Assign a website to a client
generate_magic_link — Generate a client login link
Credits
allocate_credits — Allocate credits to a client
Scheduling
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.
Remote MCP Server
You can also connect via the remote MCP endpoint without installing anything:
https://mcp.lindo.ai/mcpLinks
Available Tools
50 toolsadd_custom_domainAdd Custom DomainCInspect
Add a custom domain to a website.
Inputs: domain (required), website_id (required).
add_workspace_team_memberAdd Team MemberCInspect
Add a team member to the workspace.
Inputs: role (required), email (required).
allocate_creditsAllocate CreditsBInspect
Allocate credits to a client.
Inputs: amount (required), client_id (required), credit_type (required), notes, +1 more.
assign_websiteAssign Website to ClientCInspect
Assign a website to a client.
Inputs: client_id (required), website_id (required).
batch_check_blog_statusCheck Multiple Blog Workflow StatusesARead-onlyInspect
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.
Inputs: workflow_ids (required).
batch_check_website_statusCheck Multiple Website Workflow StatusesARead-onlyInspect
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.
Inputs: workflow_ids (required).
batch_create_blogsCreate Multiple Blog Posts (Batch)AInspect
Start up to 25 blog-creation workflows on a single website in one request. Returns one workflow_id per item. Poll with batch_check_blog_status or check_blog_status.
Inputs: items (required), website_id (required).
batch_create_websitesCreate Multiple Websites (Batch)AInspect
Start up to 25 website-creation workflows in one request. Returns one workflow_id per item. Poll the combined status with batch_check_website_status, or the individual ones with check_website_status.
Inputs: items (required).
check_blog_statusCheck Blog Creation StatusARead-onlyInspect
Poll the status of a blog-creation workflow started by create_blog. Pass the workflow_id you received from that tool. While running, call this again after poll_after_ms ms. Once done is true, status is complete or errored; when complete, result holds the published blog info.
Inputs: workflow_id (required).
check_edit_statusCheck Website Edit StatusARead-onlyInspect
Poll the status of a website-edit workflow started by edit_website. Pass the workflow_id you received from that tool. While running, call this again after poll_after_ms ms. Once done is true, status is complete or errored; when complete, result holds the changed pages.
Inputs: workflow_id (required).
check_website_statusCheck Website Creation StatusARead-onlyInspect
Poll the status of a website-creation workflow started by create_website. Pass the workflow_id you received from that tool. While the workflow is running, call this again after poll_after_ms ms. Once done is true, status is complete (all pages generated), partial (some failed), or errored. result.pages lists every page (home + additional) with its individual status.
Inputs: workflow_id (required).
create_blogCreate Blog PostAInspect
Create an AI-generated blog post on a website. Starts an asynchronous workflow and returns a workflow_id immediately — poll check_blog_status with that id to track progress and get the final result.
Inputs: prompt (required), website_id (required), schedule_at.
create_clientCreate ClientCInspect
Create a new client in the workspace.
Inputs: name (required), email (required), phone, send_invitation.
create_websiteCreate WebsiteAInspect
Create a new website using AI. Starts an asynchronous workflow and returns a workflow_id immediately — poll check_website_status with that id to track progress and get the final result. Optionally assign to a client by providing client_id (existing) or client_email (lookup or create new).
Inputs: prompt (required), client_id, client_name, schedule_at, +1 more.
delete_blogDelete Blog PostADestructiveInspect
Delete a blog post from a website.
Inputs: blog_id (required), website_id (required).
delete_clientDelete ClientADestructiveInspect
Delete a client from the workspace.
Inputs: record_id (required).
delete_pageDelete PageBDestructiveInspect
Delete a page from a website.
Inputs: page_id (required), website_id (required).
delete_websiteDelete WebsiteBDestructiveInspect
Delete a website from the workspace.
Inputs: record_id (required).
edit_websiteEdit WebsiteAInspect
Edit an existing website (across its pages) using AI. Starts an asynchronous workflow and returns a workflow_id immediately — poll check_edit_status with that id to track progress and get the final result.
Inputs: prompt (required), website_id (required), publish, schedule_at.
generate_magic_linkGenerate Magic LinkCInspect
Generate a magic login link for a client.
Inputs: client_id (required).
get_blogGet Blog DetailsARead-onlyInspect
Get blog post details.
Inputs: blog_id (required), website_id (required).
get_blog_htmlGet Blog HTMLARead-onlyInspect
Get the HTML content of a blog post.
Inputs: blog_id (required), website_id (required).
get_client_creditsGet Client CreditsBRead-onlyInspect
Get client credit balance.
Inputs: client_id (required).
get_creditsGet Workspace CreditsARead-onlyInspect
Get workspace credit balance.
Inputs: no named parameters.
get_pageGet Page DetailsBRead-onlyInspect
Get page details.
Inputs: page_id (required), website_id (required).
get_page_htmlGet Page HTMLARead-onlyInspect
Get the HTML content of a page.
Inputs: page_id (required), website_id (required).
get_websiteGet Website DetailsCRead-onlyInspect
Get website details.
Inputs: website_id (required).
get_website_analyticsGet Website AnalyticsCRead-onlyInspect
Get website analytics.
Inputs: website_id (required).
get_website_teamGet Website TeamCRead-onlyInspect
Get website team members.
Inputs: website_id (required).
get_workspaceGet Workspace DetailsCRead-onlyInspect
Get workspace details.
Inputs: no named parameters.
get_workspace_analyticsGet Workspace AnalyticsDRead-onlyInspect
Get workspace analytics.
Inputs: no named parameters.
get_workspace_teamGet Workspace TeamARead-onlyInspect
Get workspace team members.
Inputs: no named parameters.
list_blogsList Blog PostsARead-onlyInspect
List all blog posts on a website.
Inputs: website_id (required).
list_clientsList ClientsARead-onlyInspect
List all clients in the workspace.
Inputs: no named parameters.
list_pagesList PagesBRead-onlyInspect
List all pages on a website.
Inputs: website_id (required).
list_websitesList WebsitesARead-onlyInspect
List all websites in the workspace.
Inputs: no named parameters.
publish_blogPublish Blog PostCInspect
Publish a static blog post with markdown content.
Inputs: path (required), page_title (required), website_id (required), blog_content (required), +4 more.
publish_pagePublish PageBInspect
Publish a static page with HTML content.
Inputs: html (required), path (required), page_title (required), website_id (required).
remove_custom_domainRemove Custom DomainBDestructiveInspect
Remove a custom domain from a website.
Inputs: website_id (required).
remove_workspace_team_memberRemove Team MemberADestructiveInspect
Remove a team member from the workspace.
Inputs: member_id (required).
unpublish_blogUnpublish Blog PostBDestructiveInspect
Unpublish a blog post from a website.
Inputs: blog_id (required), website_id (required).
unpublish_pageUnpublish PageBDestructiveInspect
Unpublish a page from a website.
Inputs: page_id (required), website_id (required).
update_blogUpdate BlogCInspect
Update blog post metadata.
Inputs: blog_id (required), website_id (required), seo, name, +1 more.
update_blog_contentUpdate Blog ContentBInspect
Update the content of an existing blog post.
Inputs: blog_id (required), website_id (required), blog_content (required), seo, +1 more.
update_clientUpdate ClientBInspect
Update an existing client.
Inputs: record_id (required), name, email, phone.
update_pageUpdate PageBInspect
Update page metadata.
Inputs: page_id (required), website_id (required), seo, name, +1 more.
update_page_contentUpdate Page ContentCInspect
Update the content of an existing page.
Inputs: html (required), page_id (required), website_id (required), seo.
update_websiteUpdate WebsiteCInspect
Update website details.
Inputs: record_id (required), business_name, business_description.
update_website_settingsUpdate Website SettingsCInspect
Update website settings.
Inputs: settings (required), website_id (required).
update_workspaceUpdate WorkspaceCInspect
Update workspace details.
Inputs: language, business_name, default_currency.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 50 tools
Tools are broadly separated by resource (workspace, client, website, page, blog) and action, and the async workflow/batch variants are clearly scoped. Minor ambiguity exists between create_blog (AI-generated) and publish_blog (static markdown), and get_credits vs get_client_credits requires reading descriptions to distinguish.
Most tools follow a consistent verb_noun pattern (list_websites, create_client, delete_page, unpublish_blog), with batch/check variants following the same convention. Small inconsistencies like get_workspace_team vs add_workspace_team_member and unprefixed get_credits vs get_client_credits keep it from a 5.
At 50 tools, this is an extreme count for a single MCP server; even with a broad CMS scope, the agent surface is very large. Many workflow starters and their polling/batch counterparts inflate the surface and would be better grouped behind fewer tools or explicit sub-resources.
The surface covers nearly full lifecycles for workspaces, clients, websites, pages, and blogs, including CRUD, publishing, analytics, team management, credits, custom domains, and async workflows with batch status polling. No obvious dead ends or critical missing operations exist for the stated platform domain.
Maintenance
Related MCP Connectors
MCP Server for Web2MD — convert URLs to Markdown from Claude Desktop, Cursor, etc.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Build, edit, host, and publish websites from AI assistants. Setup: https://mcp.orivox.org/
Publish websites with a small backend (KV, SQLite, files). MCP for AI agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for Averra Extract — lets AI agents like Claude, Cursor, and ChatGPT convert any webpage into clean, LLM-ready Markdown.582 npmMIT
- AlicenseAqualityBmaintenanceMCP Server for Web2MD — convert webpage URLs to clean Markdown from Claude Desktop, Cursor, or any MCP-compatible agent.1213 npmMIT
- AlicenseAqualityBmaintenanceAutomateLab AI-SEO audits, scores, and rewrites web pages for AI citation eligibility, AEO and GEO. No API keys or registration. Works with Claude, Cursor, Codex, and other MCP clients. Product and documentation: https://automatelab.tech/products/mcp/ai-seo/2088 npm3MIT
- AlicenseBqualityCmaintenanceMCP server to publish HTML/Markdown docs, upload assets, and reply to stakeholder comments on uselink.app directly from AI tools like Claude and Cursor.3410 npmMIT