NestDaddy

Cactal

ai.cactal/cactal · v1.0.0

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

Connect Remote server

Terminal
claude mcp add --transport http cactal https://api.cactal.ai/v1/mcp
~/.cursor/mcp.json
{
  "mcpServers": {
    "cactal": {
      "url": "https://api.cactal.ai/v1/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "cactal": {
      "type": "http",
      "url": "https://api.cactal.ai/v1/mcp"
    }
  }
}
Claude Desktop
Settings > Connectors > Add custom connector
URL: https://api.cactal.ai/v1/mcp

Tools 80 found in our last check

  • feedback_submit

    Adds 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 OAuth connection. Never include credentials, secrets, raw s…

  • websites_list

    Lists 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; supports `sort` by `createdAt`, `updatedAt`, or `name` and…

  • websites_get

    Returns 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 the website’s CMS schema and domains. Websites in the trash r…

  • websites_create

    Creates 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 attempts to replace on its next run together with a matching…

  • websites_rename

    Updates 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_list

    Returns 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 verification status and the DNS records still expected.

  • websiteDomains_createCustomDomain

    Claims `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 with 403 `custom_domains_disabled` otherwise. Adding or re…

  • websiteDomains_verifyCustomDomain

    Re-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 forwards the verification request to Cactal. `failureMessag…

  • websiteDomains_setPrimaryDomain

    Makes 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` custom domains can be made primary — the request fails wi…

  • websiteDomains_removeCustomDomain

    Deregisters 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 domain stays in `removing` status and a background sweep retries…

  • websiteDomains_renamePlatformDomain

    Moves 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 be one of the labels Cactal reserves. The change takes effec…

  • websiteAssets_list

    Returns 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: image, video, audio, font, or document), or `search`, which…

  • websiteAssets_get

    Returns 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 render images also receive the image.

  • websiteAssets_importFromUrl

    Fetches 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 archives are refused. Images, fonts, and PDFs must parse a…

  • websiteAssets_update

    Changes `filename`, `description`, or `category`. Pass only the fields to change; `null` clears a field. `category` is images only.

  • websiteAssets_delete

    Archives 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_get

    Returns 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 working on a website.

  • websiteKnowledge_project_edit

    Applies 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 fails with `validation` and returns the current content.

  • websiteKnowledge_agentNotes_edit

    Applies 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 derivable from the website source. A passage that no longer ma…

  • websiteKnowledge_list

    Lists 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_create

    Keeps 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 findings belong in agent notes.

  • websiteKnowledge_update

    Renames a context entry or replaces the text the agent reads. Replacing text does not change the downloadable original; images have no text.

  • websiteKnowledge_read

    Read 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_search

    Find 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. matched reports a hit; truncated means evidence may be om…

  • websiteKnowledge_view

    Returns one private PNG, JPEG, or WebP context resource.

  • websiteFavicons_set

    Sets 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 drafts and publishing. Read the current favicon from the `fa…

  • websiteSourceCode_summary_get

    Returns `headVersion`, `publishedVersion`, and whether the website has unpublished source changes.

  • websiteSourceCode_files_list

    Lists 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 explicit `version`, and pin continuation requests to the res…

  • websiteSourceCode_files_read

    Reads 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_search

    Finds 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. `pattern` is literal text unless `isRegex` is set, and matching…

  • websiteSourceCode_changes_list

    Lists 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_diff

    Returns a bounded unified diff for one file name between two version refs, defaulting from published to head.

  • websiteSourceCode_lease_acquire

    Acquires 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 take the lease automatically unless another editor is stil…

  • websiteSourceCode_files_upsert

    Creates 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_strReplace

    Atomically 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 `dryRun` to validate and count replacements without committing.…

  • websiteSourceCode_files_delete

    Deletes 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_editRoute

    Rewrites and normalizes a page's `definePage` route literal. Takes the edit lease when no `leaseToken` is sent.

  • websiteSourceCode_metadata_edit

    Replaces 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_check

    Runs 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: false` with diagnostics, and pages that compiled but threw whil…

  • websiteSourceCode_deployment_status

    Returns 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 website.

  • websiteSourceCode_deployment_ensure

    Returns an existing non-failed deployment for the selected version or builds one. Poll status when another request is already building it.

  • websiteSourceCode_head_publish

    Validates, builds, and publishes head. Canonical formatting may create a new head first. Pass the `version` the check returned to refuse publishing a draft that changed since. Takes the edit lease when no `leaseToken` is sent.

  • websiteSourceCode_head_restore

    Copies an earlier version or `published` into a new head without publishing or rewriting history. Takes the edit lease when no `leaseToken` is sent.

  • websiteSourceCode_published_unpublish

    Takes the website offline without changing its draft source or version history. The unchanged head can be published again later. No edit lease is required.

  • websiteSourceCode_published_rollback

    Validates and republishes an earlier version as a new head and published version, preserving history. Takes the edit lease when no `leaseToken` is sent.

  • websitePreview_capture

    Renders one page of the site in a real browser and returns the image, so you can check layout, spacing, and responsive behaviour that source-level checks cannot see. `path` is site-relative and may include a query string, so dynamic routes are captured with real values rather th…

  • cms_schema_snapshot

    Returns every active collection and field of a website in one call — the full content model. Collections are ordered newest first; fields are grouped by collection in display order. Use this to discover the schema before reading or writing items.

  • cms_collections_create

    Creates a collection in the website’s CMS. `slug` uses lowercase letters, digits, and hyphens (max 64 characters, starting with a letter) and must be unique among the website’s active collections; `displayName` is 1–200 characters and `description` up to 2,000. Optionally pass `…

  • cms_collections_update

    Updates `displayName` (1–200 characters), `description` (up to 2,000 characters; pass `null` to clear), and/or `slug` (a rename). A slug change fails with a conflict when another active collection in the website already uses it, and when the website has a published version the r…

  • cms_collections_delete

    Soft-deletes the collection, making it and all of its items unreachable through the API; the slug becomes reusable. Refused with a conflict while any reference field in another collection targets this collection — delete those fields first. If the website has a published version…

  • cms_fields_create

    Adds a typed field at the end of the collection’s field order. `key` is lowercase snake_case (max 64 characters), must be unique in the collection, and cannot use the reserved metadata names `id`, `slug`, `publishedAt`, `publishAt`, `createdAt`, `updatedAt`, or `position`; `type…

  • cms_fields_update

    Updates `displayName`, `description`, `required`, `isUnique`, `example`, and (for `option` fields only) `config`; `type` and `targetCollectionId` are immutable. Setting `required: true` is rejected until every active item has a valid value for the field. Setting `isUnique: true`…

  • cms_fields_delete

    Permanently deletes the field and its stored values: the key is stripped from every item’s `data`, and reference or asset attachments made through the field are removed. This cannot be undone. If the website has a published version, the deletion is validated against the publishe…

  • cms_items_list

    Returns the collection’s active items in manual (drag) order by default, 20 per page (max 100); paginate with `cursor` or with 1-based `page` offsets, not both. Filter with `published` (`true` / `false`) and a JSON-encoded `filter` map of `{ fieldKey: { operator: value } }` — op…

  • cms_items_get

    Returns one item, looked up by `itemId` or by the `collectionId` + `slug` pair (provide exactly one of the two). The `data` object is complete and schema-shaped: every currently-defined field is present and missing optional values read as `null`. `depth` (0–3, default 0) embeds…

  • cms_items_backreferences_list

    Lists active items that reference the target item through a `reference` or `multi_reference` field, newest first, with cursor pagination (default 20 per page, maximum 100). Each source item appears once even when multiple fields point to the target. `depth` (0–3, default 0) cont…

  • cms_items_create

    Creates an item at the end of the collection’s manual order. Scalar values go in `data` keyed by field key and are validated against the field types — unknown keys are rejected, required fields must be present, `plain_text` and `markdown` are capped at 1,048,576 bytes (markdown…

  • cms_items_update

    Patches an item; omitted fields are left untouched. Keys in `data` are merged into the existing values and validated the same way as on create, while each key provided in `references`, `images`, or `files` replaces that field’s value wholesale — pass `null` (or `[]` for multi-va…

  • cms_items_setPublished

    Use exactly one publication action: `published: true` publishes immediately and sets `publishedAt` to now; a future `publishAt` schedules a draft for automatic publication; `published: false` unpublishes an item or cancels its schedule. A published item must be unpublished befor…

  • cms_items_delete

    Soft-deletes the item: it disappears from reads, list results, and backreferences, and fields referencing it read `null` (single reference) or shrink (multi-reference). Its slug becomes reusable, and incoming references are preserved so the item can be restored.

  • cms_items_restore

    Restores a soft-deleted item, making it readable again and re-exposing references to and from it. Returns 404 when the item is not currently deleted.

  • websiteAnalytics_query_get

    Returns aggregate engagement totals — page views, distinct visitors, visits, bounces, and total time in seconds — for a date range, optionally broken down by one dimension. Use it to answer "how much traffic did the site get" and "what are the top pages/referrers/countries" styl…

  • websiteAnalytics_timeseries_get

    Returns one traffic time series bucketed by `unit` (`year`, `month`, `day`, `hour`, or `minute`). `series` selects which: `pageviews` returns parallel `pageviews` and `sessions` arrays with one point per time bucket (and accepts `compare` — `prev` or `yoy` — to request compariso…

  • websiteAnalytics_realtime_get

    Returns a compact snapshot of traffic over Umami's trailing 30-minute realtime window: total page views, distinct visitors, tracked custom events, and distinct countries, plus the snapshot timestamp. The visitor total is not directly comparable to the removed `active` endpoint's…

  • websiteForms_list

    Returns every form with inbox and spam counts, whether the published site still references it, who it notifies, the number of inbox submissions since the caller last opened the Forms tab, and monthly usage against the Free plan limit (`limit` is null on paid plans). Forms come f…

  • websiteForms_submissions_list

    Returns submissions newest first as a cursor-paginated page. Filter by `form` name, `status` (`inbox` by default, or `spam`), and `source` (`published` for real visitors, `draft` for test submissions from the draft preview). Items carry the fields in submitted order, the inferre…

  • websiteForms_submissions_get

    Returns one submission with its fields in submitted order.

  • websiteForms_submissions_setStatus

    Moves a submission between the inbox and the spam folder. Restoring to `inbox` sends the notification email if it was never sent. Spam is deleted automatically after 30 days.

  • websiteForms_submissions_delete

    Permanently deletes one submission.

  • websiteForms_recipients_add

    Adds an email address to one form, identified by its name from the action path. New forms notify the organization owners until changed. Organization members and website editors receive submissions immediately; other addresses get a confirmation email (link valid 7 days). `member…

  • websiteForms_recipients_remove

    Stops emailing an address for one form. A form with no recipients emails nobody; its submissions still reach the Forms inbox.

  • websiteForms_recipients_resend

    Issues a fresh confirmation link to a pending, failing, or stopped address.

  • docs_search

    Search the Cactal product documentation: concepts, guides, agent workflows, platform limits, and the API reference. Returns matching Markdown excerpts with page paths; read a full page with the docs read operation. Consult the docs before non-trivial or unfamiliar work such as s…

  • docs_read

    Read one Cactal documentation page as Markdown. Pass a page path from docs search results, for example "concepts/publishing" or "agents/agent-safe-publishing". Pass "llms.txt" for an index of every page with titles and descriptions.

  • skills_read

    Read the matching Cactal skill before acting: source-editing-workflow before source edits, design-direction for design, copywriting for words. Required skills are included. - analytics: Traffic, visitors, referrers, and other analytics reports - assets-and-media: Find, import, o…

  • profile_get

    Returns who this credential acts for (a stable `id`, plus `name` and `email` for a person) and the organizations it can work in. An organization lists `websites` only when access is limited to those websites. Use an organization `id` to list or create websites.

  • webResearch_screenshot

    Renders an external public page in a real browser and returns the image, to study a reference site or the user's existing site: its layout, hierarchy, density, and feel. Consent banners and overlays are dismissed first. Focus with `selector` (plus `padding`) or `clip` and page d…

  • webResearch_probe

    Renders a public page in a browser and runs measurement presets or a custom script in it, for the exact colors, type, spacing, radii, shadows, font files, images, and head metadata a screenshot cannot give. Each result is a JSON string, cut with `truncated: true` when too long.…

  • webResearch_profile

    Reads one to ten of a business's own pages (its site, Google listing, Instagram, Facebook, Yelp, or any other profile) into one Markdown profile each (name, address, phone, links, hours, services and prices, rating, reviews and posts quoted verbatim, what the page did not show)…

  • webResearch_viewImage

    Fetches 1 to 48 public image URLs and returns the pictures; nothing is stored. Up to 4 come back full size (an SVG also returns the start of its source); more come back on contact sheets, each a grid of pictures, each under its number (`n`; numbers run on across calls), with a g…

Details

Endpointhttps://api.cactal.ai/v1/mcp (Streamable HTTP)
First published7 Aug 2026
Last updated7 Aug 2026
Registry nameai.cactal/cactal

More ai and media servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.