add_custom_domain
Add a custom domain to a website.
Run a Lindo AI agency workspace from the agent — build and edit whole websites with AI, manage clients with magic-link access, and administer pages, domains, team and analytics.
LABSCO SUMMARY
Agency platforms live or die on the client handoff, and requiring every client to create an account is where most of them lose. Generating a magic login link per client sidesteps it entirely. The other structurally right decision is separating publish from update: publish_page and unpublish_page exist alongside update_page_content, so changing a page and making it live are different acts rather than one implicit one. Note that the AI build and edit tools are asynchronous — an agent calling create_website and reporting success has reported a job starting, not a site existing.
An agency-oriented website platform client with four layers: the workspace and its team, clients and their access, websites created and edited by AI, and the pages, domains and analytics under each.
LINDO_API_KEY. Website creation and editing are asynchronous workflows, so those calls return something to track rather than a finished result.
One command plus a key — npx -y @lindoai/mcp-server, then supply credentials
USE CASES
Start the AI creation workflow and track the job, rather than treating the call's return as a finished site.
Create the client, assign the website, and generate a magic link so they can see it without an onboarding flow.
Update the content, then publish it as a separate act — and unpublish rather than delete when something needs to come down temporarily.
Add the custom domain to the website and adjust the site settings around it.
Read the per-website analytics for a client conversation and the workspace analytics for your own.
Add and remove team members at workspace level, and read the team assigned to a specific website.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
add_custom_domainAdd a custom domain to a website.
add_workspace_team_memberAdd a team member to the workspace.
allocate_creditsAllocate credits to a client.
assign_websiteAssign a website to a client.
batch_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.
batch_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.
batch_create_blogsStart 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.
batch_create_websitesStart 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.
check_blog_statusPoll 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.
check_edit_statusPoll 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.
check_website_statusPoll 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.
create_blogCreate 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.
create_clientCreate a new client in the workspace.
create_websiteCreate 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).
delete_blogDelete a blog post from a website.
delete_clientDelete a client from the workspace.
delete_pageDelete a page from a website.
delete_websiteDelete a website from the workspace.
edit_websiteEdit 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.
generate_magic_linkGenerate a magic login link for a client.
get_blogGet blog post details.
get_blog_htmlGet the HTML content of a blog post.
get_client_creditsGet client credit balance.
get_creditsGet workspace credit balance.
get_pageGet page details.
get_page_htmlGet the HTML content of a page.
get_websiteGet website details.
get_website_analyticsGet website analytics.
get_website_teamGet website team members.
get_workspaceGet workspace details.
get_workspace_analyticsGet workspace analytics.
get_workspace_teamGet workspace team members.
list_blogsList all blog posts on a website.
list_clientsList all clients in the workspace.
list_pagesList all pages on a website.
list_websitesList all websites in the workspace.
publish_blogPublish a static blog post with markdown content.
publish_pagePublish a static page with HTML content.
remove_custom_domainRemove a custom domain from a website.
remove_workspace_team_memberRemove a team member from the workspace.
unpublish_blogUnpublish a blog post from a website.
unpublish_pageUnpublish a page from a website.
update_blogUpdate blog post metadata.
update_blog_contentUpdate the content of an existing blog post.
update_clientUpdate an existing client.
update_pageUpdate page metadata.
update_page_contentUpdate the content of an existing page.
update_websiteUpdate website details.
update_website_settingsUpdate website settings.
update_workspaceUpdate workspace details.
BEFORE YOU INSTALL
50 tools when we connected. The documentation covers only ten tools; pages, most blog tools, custom domains, workspace management and every delete are available but undocumented. The API key requires a Business or Whitelabel plan.
Of the 6 documented clients, 5 run the server on your machine and 1 connects to a hosted endpoint.
CONTEXT COST
Rated by the size of the 50 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx -y @lindoai/mcp-serverhttps://mcp.lindo.ai/mcpAdd this hosted endpoint to your MCP client using the credentials listed under Requirements.
{
"mcpServers": {
"lindo": {
"command": "npx",
"args": [
"-y",
"@lindoai/mcp-server"
],
"env": {
"LINDO_API_KEY": "<YOUR_LINDO_API_KEY>"
}
}
}
}