← Registry

Content Tools

dotsy.ai

An MCP server for creating and managing websites, including site settings, briefs, publishing, and analytics.

1 endpoint89 known toolsFirst detected October 7, 2026Last detected October 7, 2026

ENDPOINT 1

https://mcp.dotsy.ai/mcp

No auth detected

MCP server metadata

Name
paige
Version
0.3.0
Capabilities
tools.listChangedresources.listChanged
Server instructions

No Dotsy account yet: call start_site, pass guestToken on later tools, build the draft, then claim_site when they want to keep it (Connect opens on claim/publish). Dotsy CMS: one site (slug) per call; every tool needs context (one sentence why). Writes stage DRAFT until publish_site (feedback + handoff required). Use publicUrl/liveReady — never guess hostnames. Uploaded files are live in the editor and draft preview at once; the published site picks them up at the next publish. Ambiguous build/clone → get_skill('intake'). Before publish → get_skill('verify'). Before publish_site → get_draft_status (may require publish_confirm); run verify_page sample when brief.priorities.seo ≠ skip. Platform rules → get_skill on demand. Bulk/multi-page: apply_changeset with writes[].route, or dotsy push — never loop put_content/put_route. Page body >60KB or put_content rejected → get_skill('large-content'). Published page re-key / obscure URL: rename_content (not get_content+apply_changeset); then publish_site. Change a page's URL: rename_page (leaves a 301). Site slug = public hostname; change with rename_site (not update_site or rebuild). After import: preview first — publicUrl only when liveReady; draft preview via start_edit_session.draftPreviewUrl (not draftUrl) when not. Extract shared layout only if user wants editable CMS — get_skill('clone'). Each site has rules & guidelines in get_site `guidance`: if `guidance.missing` lists sections, load get_skill('guidance') and write them (ask the user at most 3 questions) before your first change; follow them; rules are checked at publish; when you change the design, content model or SEO patterns, update them with update_brief. Build theater is optional agent-facing guidance for long site builds: say one brief intent sentence before create_site or import_site_from_url; then, at most once per beat (Spark after create_site, First light when previewReady or publishable, Polish when mirrorComplete or assetsReady, Structure when the structure job completes, Launch after publish_site), share one short progress line, about five lines maximum per clone. Reuse forHumans.quote only when forHumans.waiting is true; never call a quote-only tool. On first_light share forHumans.publicUrl only when present (liveReady); never surface payload.publicUrl directly — draft preview via start_edit_session.draftPreviewUrl when suggestEditPage is true (not draftUrl). If forHumans.suggestEditPage is true, you may call start_edit_session and share draftPreviewUrl while the site is still draft; never block import or clone on screenshots or compose. If someone changed the site since your last session, get_activity shows what; revert_change undoes one change.

Known tools 89

create_site

Create empty site; seeds brief.

Potential side effects
get_site

Site detail, stats, publicUrl, brief head (default-on), and readiness flags.

Inferred read-only
update_brief

Update `_intent/site.

Potential side effects
get_analytics

Read-only traffic overview (default) or full breakdowns via include[]; optional bot id for crawler page drill-down.

Inferred read-only
update_site

Update site settings: title, keyConvention, or editingMode ('live' = each editor save publishes immediately; 'staged' = saves stay drafts until publish_site).

Potential side effects
rename_site

Rename the site slug (public hostname {slug}.

Inferred read-only
publish_site

Publish draft to live.

Potential side effects
get_draft_status

Pending draft changes: content keys and routes with status.

Inferred read-only
discard_drafts

Discard unpublished drafts: all (omit key/keys/routes), one content key (key), or a selection (keys, routes).

Inferred read-only
delete_site

Permanently delete site; confirmSlug must equal slug.

Potential side effects
bulk_put_content

Stage many content keys (pages, layouts, fragments).

Inferred read-only
get_site_manifest

Content keys + hashes only (optional routes=true) — static files live in list_assets, not manifest.

Inferred read-only
find_replace

Case-insensitive find→replace across pages in one staged commit.

Inferred read-only
search_content

Find pages containing a phrase (grep without reading bodies).

Inferred read-only
graduate_site

Enable site search & collections (kv → do-sqlite), one-way.

Inferred read-only
apply_changeset

Atomic writes[] + deletes[]; attach routes via writes[].

Inferred read-only
import_site_from_url

Import URL to draft.

Inferred read-only
get_structure_status

Flat vs structured page counts; informs user — do not auto-run analyze/apply while requiredDecision pending.

Inferred read-only
structure_site_analyze

Propose shared layout + fragments; persist:false first.

Inferred read-only
decompose_analyze

Deprecated — use structure_site_analyze.

Inferred read-only
structure_site_apply

Rewrite flat pages to layout + fragments (draft).

Inferred read-only
get_structure_result

Last structure apply job result (structuredKeys, conflicts, partial).

Inferred read-only
adapt_site_analyze

Propose nav wiring + blog collectionization for an imported mirror (draft, opt-in).

Inferred read-only
adapt_site_apply

Apply the adapt proposal (draft): wire nav into the menu store and/or rewrite the blog index to a live <dotsy-collection>.

Inferred read-only
adapt_site_revert

Atomically restore everything the last adapt_site_apply wrote (fragments, the menu doc when the op touched it, index, member configs, routes).

Inferred read-only
get_adapt_status

Read adapt state: proposal summary + proposalEtag (+ applied/consumed flag), undo-record presence, active or queued job progress.

Inferred read-only
list_content

List content keys (HTML/md); not assets — use list_assets.

Inferred read-only
get_content

Read one content key; optional selector (region) or published=true (live body).

Inferred read-only
put_content

Stage one content key.

Inferred read-only
stage_content_chunk

Append one ≤60KB chunk of a large new page.

Inferred read-only
patch_content

Edit one content key via ops[] (selector ops or replace-string).

Potential side effects
batch_patch_content

patch_content on multiple keys; all-or-nothing validation.

Inferred read-only
delete_content

Delete content key (tombstone if published).

Potential side effects
rename_content

Re-key a page by slug (draft or published static).

Inferred read-only
put_post

Stage a blog post via structured meta+body (?

Potential side effects
inspect_collection

Collection state — count, server.

Inferred read-only
list_collections

Collections on the site — name, noun, item count (or 'not published yet'), URL pattern, and whether any member is staged.

Inferred read-only
update_collection

Rename a collection's display name and/or noun (e.

Inferred read-only
new_post_template

Read-only scaffold for a new post — suggested key/path, membership meta, blank or duplicate body.

Potential side effects
reindex_collection

Build/finish collection indexes after publish returns collectionDataPending or collectionSqlPending.

Potential side effects
preview_page

Verify-only composed HTML check; home preview may include requiredDecision — ask mirror vs editable before structure_*.

Inferred read-only
verify_page

Pre-publish lint (tags, assets, layout).

Potential side effects
preflight_site

Plan check before large build (counts, route soft limit).

Inferred read-only
start_edit_session

Open a draft session.

Inferred read-only
get_site_outline

Site shape: every layout and section with its page count and staged-change flag, whether a layout is missing, redirects count, menus grouped by where they show, and collections with their page placements.

Inferred read-only
get_route

Get one route by path (home is '/').

Inferred read-only
put_route

Create/replace route; contentKey derived from path if omitted.

Potential side effects
patch_route

Partial route update (only sent fields change; an OMITTED field is left alone).

Potential side effects
rename_page

Change a page's URL: moves its route from `from` to `to`.

Inferred read-only
delete_route

Remove a route by path.

Potential side effects
list_goals

List site conversion goals (pageview paths and form submits).

Inferred read-only
put_goals

Create or replace all site conversion goals (≤50).

Potential side effects
estimate_test

Estimate days to reach promote readiness for a page (traffic baseline).

Inferred read-only
start_test

Start a same-URL A/B test (draft or live source).

Inferred read-only
promote_experiment

Promote a winning A/B variant to live — explicit user instruction only; see get_skill('verify') § A/B.

Inferred read-only
delete_draft_test

Remove a draft A/B test (releases variant bodies; does not publish).

Potential side effects
set_experiment_note

Record what was learned from an ended A/B test (≤500 chars; null clears).

Inferred read-only
get_menu

Read a menu's draft items and etag; menu rules → get_skill('nav').

Inferred read-only
put_menu_item

Partial upsert one menu item: provided fields overwrite; omitted html/childTemplate/childShell/attrs/data are preserved.

Inferred read-only
delete_menu_item

Remove one item from a menu (page stays live).

Potential side effects
reorder_menu

Set final menu order.

Inferred read-only
get_menu_doc

Read the whole menu doc (all menus + shell/template), etag for put_menu_doc, and issues (by item id) — page_not_routable, page_missing, page_dead_link, page_is_redirect — computed from the draft routes, so a link that won't show or leads nowhere shows up before publish.

Potential side effects
put_menu_doc

Replace the whole menu doc (ifMatch from get_menu_doc required).

Inferred read-only
list_assets

CMS uploads under assets/ only — not mirrored clone CDN (get_site mirroredAssets or import warmJob).

Inferred read-only
get_asset

Read one asset (metadata + base64 + stored sha256).

Inferred read-only
bulk_put_assets

Upload 1–200 CMS assets; key = path after /assets/.

Potential side effects
delete_asset

Delete a static asset by key.

Potential side effects
start_site

Start one draft site with no Dotsy account.

Inferred read-only
claim_site

Move the guest draft onto your signed-in Dotsy account.

Inferred read-only
list_skills

Paige build skills (id + whenToUse).

Inferred read-only
get_skill

Skill body + optional questions[].

Inferred read-only
submit_feedback

Optional mid-session feedback (required feedback rides with publish_site).

Inferred read-only
get_activity

List site activity or fetch one change diff (pass id).

Inferred read-only
revert_change

Undo one activity event by staging the prior version as draft only — call publish_site to go live.

Inferred read-only
get_account_context

Account, user, memberships[].

Inferred read-only
add_custom_domain

Connect apex and/or www on a paid plan; starts a DNS connect session.

Inferred read-only
get_custom_domain_connect

Current connect session and nextAction (browser URL or manual DNS guide).

Inferred read-only
reapply_custom_domain_oauth

Re-apply DNS with stored Cloudflare OAuth grant (no browser).

Inferred read-only
refresh_custom_domain

Poll one hostname until DNS/cert propagates.

Inferred read-only
wait_for_custom_domain

Poll one hostname until it is connected or the timeout is reached.

Inferred read-only
set_primary_custom_domain

Set the canonical host (301 target) when multiple hostnames are connected.

Inferred read-only
list_custom_domains

List all custom hostnames and connection status for the site.

Inferred read-only
remove_custom_domain

Remove one custom hostname from the site.

Potential side effects
list_form_submissions

List form submissions (metadata + bounded field preview — not full PII).

Inferred read-only
get_form_submission

Read one form submission with the full field payload (explicit PII access — use only when needed).

Inferred read-only
list_my_sites

List your Dotsy sites.

Inferred read-only
list_pages

List pages on a site — route settings (path/title/navLabel/purpose) by default, one row per route.

Inferred read-only
edit_page

Open the interactive page canvas to change content: the user clicks an element, then you call patch_content.

Inferred read-only
get_site_build_progress

Read-only build progress for humans (build-theater view) during structure/adapt or after import.

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.paige]
url = "https://mcp.dotsy.ai/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "paige": {
      "type": "http",
      "url": "https://mcp.dotsy.ai/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: paige
Remote MCP URL: https://mcp.dotsy.ai/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "paige": {
      "url": "https://mcp.dotsy.ai/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "paige": {
      "type": "http",
      "url": "https://mcp.dotsy.ai/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "paige",
  "transport": "streamable-http",
  "url": "https://mcp.dotsy.ai/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Loading Trust v2 evidence…

Checking the associated registrable domain. The BuiltWith key remains server-side.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.