Cactal

by cactal.ai · ai.cactal/cactal

The website platform for AI agents. One API to build, host, and operate real websites.

OnlineRemote
Category
Search and web data
Connection
Remote (HTTP)
Tools
60 reported
Status
Online

Connect it to your AI

Claude Code

claude mcp add --transport http cactal https://api.cactal.ai/v1/mcp

Claude, ChatGPT, Cursor and other apps

Add it as a custom connector with this URL (Streamable HTTP):

https://api.cactal.ai/v1/mcp

Cursor, VS Code and other apps (mcp.json)

{
  "mcpServers": {
    "cactal": {
      "url": "https://api.cactal.ai/v1/mcp"
    }
  }
}

Tools it offers

60 tools, as the server itself reported during our check on Oct 31, 2026.

  • feedback_submitAdds user-requested free-form feedback to the Cactal product-feedback inbox. Describe what happened and what would have made the experience better. Agents must set `authorKind` to `agent` even when acting through a user
  • websites_listLists accessible websites. By default returns active websites: use `organizationId` to scope one organization, `scope=shared` without it for direct grants outside your memberships, or `scope=all` with it to combine both;
  • websites_getReturns a single website by `websiteId`, or by its `organizationSlug` + `websiteSlug` pair when starting from a URL — provide exactly one of the two identifications. The response includes whether the caller can manage th
  • websites_createCreates a website in the organization. Provide either a `name` (trimmed, 1–200 characters) or a creation `prompt`; a prompt returns immediately with the temporary name `Untitled site`, which the built-in naming request a
  • websites_renameUpdates the website’s display name and, when supplied, its URL slug. The slug must be lowercase, URL-safe, unreserved, and unique among active websites in the organization.
  • websiteDomains_listReturns every domain record attached to the website, oldest first: the automatically allocated platform subdomain plus any custom domains. Platform subdomains are always `active`; custom domains carry their current verif
  • websiteDomains_createCustomDomainClaims `hostname` for this website and registers it with the Cactal edge. Custom domains must first be enabled for the website (`websiteDomains.setEnabled`, owner-only — enabling is the billing moment); the request fails
  • websiteDomains_verifyCustomDomainRe-checks the ownership TXT record, edge readiness, and whether an HTTPS request to the hostname reaches this Cactal domain, then returns the updated status. A customer CDN or reverse proxy in front is supported when it
  • websiteDomains_setPrimaryDomainMakes this domain the canonical hostname for the published website: requests reaching the platform subdomain or any other custom domain are permanently redirected (HTTP 308) to it, preserving path and query. Only `active
  • websiteDomains_removeCustomDomainDeregisters the hostname from the Cactal edge and deletes the domain record. If the removed domain was primary, the oldest remaining active custom domain is promoted automatically. If edge deregistration fails, the domai
  • websiteDomains_renamePlatformDomainMoves the website to `<label>.<platform domain>`, the free address every website is allocated at creation. `label` is just the leading part: 1-40 characters, lowercase letters, digits, and inner hyphens, and it may not b
  • websiteAssets_listReturns ready assets newest first as compact rows (`description`, `category`, dimensions, `url`, `srcSet`); fetch one asset for `originalUrl` and `variants`. Filter by `kind`, `category`, `type` (the broad MIME family: i
  • websiteAssets_getReturns the asset with `description`, `category`, and its CDN delivery shape: for transformable images `url` is the optimized 1920px default and `originalUrl` the original bytes; both never expire. MCP clients that rende
  • websiteAssets_importFromUrlFetches 1-10 public http(s) URLs server-side, one at a time, and stores each as a ready asset with no upload or finalize step. Media only: images, fonts, PDF, audio, video, dotLottie, and Rive; text, data, documents, and
  • websiteAssets_updateChanges `filename`, `description`, or `category`. Pass only the fields to change; `null` clears a field. `category` is images only.
  • websiteAssets_deleteArchives the asset: it immediately stops appearing in list responses and its id returns 404 from every asset endpoint. Archival cannot be undone through the API; previously issued CDN URLs keep serving the file.
  • websiteKnowledge_project_getReturns the website’s durable project knowledge: the text the user maintains as `content`, plus the `agentNotes` Cactal distills from agent conversations. Both are included in every Cactal agent request. Read them before
  • websiteKnowledge_project_editApplies exact-match text edits to the user’s project knowledge text, in order; an empty `oldStr` appends. Change it only when the user asks; agent-discovered facts belong in agent notes. A passage that no longer matches
  • websiteKnowledge_agentNotes_editApplies exact-match text edits to the agent notes, in order; an empty `oldStr` appends. Record only durable facts, decisions, rejected directions, and constraints, one short line each, never progress logs or anything der
  • websiteKnowledge_listLists the website’s private durable context entries: uploaded files and pasted text, each with a `title`, a generated `description`, and an `origin` of `upload` or `text`.
  • websiteKnowledge_createKeeps pasted or typed text as a context entry the agent searches and reads when relevant, using one of the website’s 25 slots. Cactal titles and describes it. Use this for material the user gives you to keep; your own fi
  • websiteKnowledge_updateRenames a context entry or replaces the text the agent reads. Replacing text does not change the downloadable original; images have no text.
  • websiteKnowledge_readRead a bounded line range from a project context document. Read short relevant documents directly; search large documents first. Do not reread sufficient search passages.
  • websiteKnowledge_searchFind evidence across selected project context documents. Batch independent queries; use passages directly when sufficient. Results merge overlapping text and include source ranges and zero-based queryIndexes into queries
  • websiteKnowledge_viewReturns one private PNG, JPEG, or WebP context resource.
  • websiteFavicons_setSets the website’s current favicon to a ready PNG, SVG, or ICO image from the same website asset library. Send `assetId: null` to clear it. The change applies immediately to every site host and is independent of source d
  • websiteSourceCode_summary_getReturns `headVersion`, `publishedVersion`, and whether the website has unpublished source changes.
  • websiteSourceCode_files_listLists file identities, sizes, and line counts without contents, sorted by type then name with cursor pagination (default 20, maximum 100). Filter by name with `nameGlob`. Defaults to head; pass `target=published` or an e
  • websiteSourceCode_files_readReads up to 50 files by name from head, published, or an explicit version. A single-file read supports line and character ranges; continue truncated reads with `nextStartCharacter` and the resolved `version`.
  • websiteSourceCode_files_searchFinds text across every source file and returns one entry per matching line with its file name, line, and column. Call this first to locate code, then read only the files it names with websiteSourceCode.files.read. `patt
  • websiteSourceCode_changes_listLists added, removed, and modified file identities between two version refs, defaulting from published to head. Results use cursor pagination; pin continuation requests to the resolved version numbers.
  • websiteSourceCode_files_diffReturns a bounded unified diff for one file name between two version refs, defaulting from published to head.
  • websiteSourceCode_lease_acquireAcquires and replaces the website's single edit lease, taking over from any other editor. Writes that pass the returned principal-bound `leaseToken` keep working until someone else takes the lease; writes without a token
  • websiteSourceCode_files_upsertCreates or replaces one head file. Pages, components, and modules require `name`; singleton types take only `type`. Takes the edit lease when no `leaseToken` is sent and returns `changed: false` for identical content.
  • websiteSourceCode_files_strReplaceAtomically applies ordered exact-string edits to up to 50 files and 200 edits in total as one head version. Each `oldStr` must match once unless `replaceAll` is true, and any failing edit aborts the whole call. Set `dryR
  • websiteSourceCode_files_deleteDeletes one head file while preserving history. Address named files by `type` and `name`, and singletons by `type`; takes the edit lease when no `leaseToken` is sent.
  • websiteSourceCode_pages_editRouteRewrites and normalizes a page's `definePage` route literal. Takes the edit lease when no `leaseToken` is sent.
  • websiteSourceCode_metadata_editReplaces a page's complete metadata object when `page` is sent, otherwise the site defaults in `website_config`. Takes the edit lease when no `leaseToken` is sent.
  • websiteSourceCode_head_checkRuns the publish-time framework quality gate without changing source: format, typecheck, lint, build, and a server-render of every page using placeholder content synthesized from the CMS schema. Failures return `ok: fals
  • websiteSourceCode_deployment_statusReturns the preview revision, available page routes, publish availability, and build state for the selected head or published source version. Fails with 404 when `target=published` is requested for a never-published webs

Questions

What is the Cactal MCP server?

The website platform for AI agents. One API to build, host, and operate real websites. It is made by cactal.ai and listed in the official MCP Registry as ai.cactal/cactal. MCP (Model Context Protocol) is the open standard that lets AI apps like Claude, ChatGPT and Cursor use outside tools.

How do I add Cactal to Claude?

In the Claude app or claude.ai, open Settings, then Connectors, choose "Add custom connector" and paste https://api.cactal.ai/v1/mcp. In Claude Code, run: claude mcp add --transport http cactal https://api.cactal.ai/v1/mcp

How do I add Cactal to ChatGPT?

ChatGPT can use remote MCP servers as connectors. In ChatGPT settings, under Apps and Connectors, turn on developer mode if asked, create a new connector and paste https://api.cactal.ai/v1/mcp.

How do I add Cactal to Cursor?

Open Cursor settings, go to MCP, choose "Add new MCP server" (or edit ~/.cursor/mcp.json) and add: { "mcpServers": { "cactal": { "url": "https://api.cactal.ai/v1/mcp" } } }

Does Cactal work right now?

Yes. It responded when we last checked on 31 Oct 2026. We check remote MCP servers every day.

What can Cactal do?

It gives your AI 60 tools, including feedback_submit, websites_list, websites_get, websites_create, websites_rename. The full list is on this page.

Is this your server? Get the badge for your README
chen.media/mcp badge

Markdown (GitHub README)

[![Listed on chen.media/mcp](https://chen.media/mcp/badge/ai-cactal-cactal.svg)](https://chen.media/mcp/ai-cactal-cactal)

HTML (switches to dark mode on its own)

<a href="https://chen.media/mcp/ai-cactal-cactal"><picture><source media="(prefers-color-scheme: dark)" srcset="https://chen.media/mcp/badge/ai-cactal-cactal.svg?theme=dark"><img src="https://chen.media/mcp/badge/ai-cactal-cactal.svg" alt="Listed on chen.media/mcp" height="40"></picture></a>

More in Search and web data

See all