sitectrl

Your AI builds real hosted websites: describe it, get a live site with SSL, forms, analytics. Free.

사용해야 할까요

품질 및 안전성

A
설명 품질
95%
스키마 완전성
80%
이름 품질
97%
오염 위험
80%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'write_site_files' description contains placeholder textwrite_site_files에서
  • LOWTool 'get_site' description lacks action verbget_site에서
  • INFOTool description contains placeholder or incomplete textwrite_site_files에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~2,203토큰 (도구 정의)
~832 B일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.72%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "sitectrl": {
      "url": "https://mcp.sitectrl.ai/mcp"
    }
  }
}

원격 엔드포인트

https://mcp.sitectrl.ai/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (13)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢whoami

The connected sitectrl account: email, plan status, free-site slot, and credit balance.

입력 스키마

{
  "type": "object",
  "properties": {}
}
🟢list_sites

List the user's sitectrl sites with their live URLs and hosting platform.

입력 스키마

{
  "type": "object",
  "properties": {}
}
🟢get_site(slug)

Details for one site: live URL, draft URL, status.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "The site's slug from list_sites."
    }
  },
  "required": [
    "slug"
  ]
}
🟡create_site(site_name, description, template, contact_email)

Build a brand-new hosted website from a plain-language description. RETURNS IMMEDIATELY with status 'building' — the site takes about 2-3 minutes and is NOT ready when this returns. Tell the user where it will be (expected_url) and poll get_build_status with the returned claim_token. NEVER call create_site a second time for the same site: each call builds another one. Works WITHOUT signing in: an unauthenticated call builds a guest site and returns a claim_url — the user signs up free (no card) at that link to keep it; unclaimed guest sites are deleted after 72 hours. Signed in, the site lands directly on the connected account (free tier: one site, no card).

입력 스키마

{
  "type": "object",
  "properties": {
    "site_name": {
      "type": "string",
      "description": "Short human name for the site, e.g. 'Whitney Apparel'."
    },
    "description": {
      "type": "string",
      "minLength": 12,
      "description": "What the site is for. MINIMUM 12 CHARACTERS — a bare 'bike shop' is rejected. Say what the business is, where it is, and what the site should include; the AI builds directly from this, so more detail means a better first result. Good: 'Oak Barrel Coffee, a small-batch roaster in Turlock CA — our story, three coffees with tasting notes and prices, and a contact form.' If the user was vague, ask them one question before calling this rather than sending two words."
    },
    "template": {
      "type": "string",
      "enum": [
        "local-services",
        "restaurant",
        "shop",
        "portfolio",
        "classes",
        "community"
      ],
      "description": "Starting template (guest builds; default local-services)."
    },
    "contact_email": {
      "type": "string",
      "description": "Optional, guest builds only: the user's email — we send the site link and a reminder before the unclaimed site expires."
    }
  },
  "required": [
    "site_name",
    "description"
  ]
}
🟢get_build_status(claim_token)

Check whether a site started by create_site has finished. Pass the claim_token create_site returned. Works WITHOUT signing in. Poll this every 30-60 seconds rather than calling create_site again — a second create_site call builds a SECOND site.

입력 스키마

{
  "type": "object",
  "properties": {
    "claim_token": {
      "type": "string",
      "description": "The claim_token from create_site."
    }
  },
  "required": [
    "claim_token"
  ]
}
🟡edit_site(slug, instruction)

Ask sitectrl's AI editor to change an existing site ('add a contact page', 'make the hero darker'). Edits land in the site's draft; the first build of a brand-new site goes straight live. Returns what changed plus the draft URL.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "instruction": {
      "type": "string",
      "description": "The change to make, in plain language."
    }
  },
  "required": [
    "slug",
    "instruction"
  ]
}
🔴write_site_files(slug, files)

Push files (HTML/CSS/JS/images) into a site's DRAFT — use this when YOU are writing the code yourself instead of asking sitectrl's AI. Text files go in 'content'; binary files (images/fonts) in 'content_base64'. Max 40 files/call, 2 MB/file. Keep the <script defer src="sc-track.js"></script> include on every HTML page (the site's built-in private analytics — publish re-adds it if missing). Use clearly-marked placeholder contact info unless the user provided real details. For working forms, POST to /_sc/form/submit with a hidden _form name field — submissions reach the owner's dashboard + email (never use mailto:). Every HTML file is checked before it's written (DOCTYPE, charset, and any invariant this site has declared) — a file that fails is refused and comes back in 'refused' with what's wrong and the exact fix; other files in the same call still write. Follow with publish_site to go live.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Relative path in the site, e.g. index.html or css/style.css"
          },
          "content": {
            "type": "string"
          },
          "content_base64": {
            "type": "string"
          }
        },
        "required": [
          "path"
        ]
      }
    }
  },
  "required": [
    "slug",
    "files"
  ]
}
🟢list_site_files(slug)

List the files in a site's draft tree (paths + sizes).

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    }
  },
  "required": [
    "slug"
  ]
}
🟢read_site_file(slug, path)

Read one file from a site's draft tree (text, or base64 for binary; 512 KB cap).

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "path": {
      "type": "string"
    }
  },
  "required": [
    "slug",
    "path"
  ]
}
🔴publish_site(slug)

Publish the site's draft to the LIVE site (hosted sites). A snapshot of the previous live version is taken first, so it's undoable.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    }
  },
  "required": [
    "slug"
  ]
}
🔴add_component(slug, name, pages, anchor, fields)

Insert a component from the site's shared library into one or more existing pages, INSTEAD of hand-writing the markup yourself — the classes are already styled and themed to this site's colours. Choices: sc-page-title (the page's one <h1>), sc-gallery (cross-fading photo reel — needs 'images'), sc-info-tiles (title + picture + text sections — needs 'tiles'), sc-instructions (numbered/titled steps, optionally with a button each — needs 'tiles'), sc-event (one dated thing: a class, a session, an opening — needs 'title'), sc-btn (a link styled as a button — needs 'label'). NOT offered: sc-header/sc-footer (the site's own shell already emits those) or sc-hero (placed once, on the home page, by the site's own build). 'anchor' says where it goes: {"type": "heading", "value": "<text on the page>", "position": "after"} (default), {"type": "id", "value": "<element id>", "position": "after"}, {"type": "main_end"} (append at the end of the page), or {"type": "replace", "value": "<class of an existing sc-* block>"}. 'pages' is "all" or a list of paths from list_site_files. A page whose anchor doesn't match comes back in 'findings' with what's wrong and the fix — other pages in the same call still get the component. Follow with publish_site.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string",
      "enum": [
        "sc-page-title",
        "sc-gallery",
        "sc-info-tiles",
        "sc-instructions",
        "sc-event",
        "sc-btn"
      ]
    },
    "pages": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "all"
          ]
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "minItems": 1
        }
      ],
      "description": "\"all\", or an array of page paths, e.g. [\"index.html\", \"about.html\"]"
    },
    "anchor": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "heading",
            "id",
            "main_end",
            "replace"
          ]
        },
        "value": {
          "type": "string",
          "description": "heading text / element id / class to replace — not used for main_end"
        },
        "position": {
          "type": "string",
          "enum": [
            "before",
            "after"
          ],
          "description": "for heading/id anchors, default after"
        }
      },
      "required": [
        "type"
      ]
    },
    "fields": {
      "type": "object",
      "description": "Component-specific content. sc-page-title: {text, eyebrow?}. sc-gallery: {images: [{src, alt}]}. sc-info-tiles: {tiles: [{title, img?, alt?, text}]}. sc-instructions: {title?, intro?, tiles: [{title?, body, img?, alt?, button?: [label, href]}]}. sc-event: {title, img?, meta?: [{label, value}], desc?, rsvp_href?, rsvp_label?}. sc-btn: {label, href}."
    }
  },
  "required": [
    "slug",
    "name",
    "anchor",
    "fields"
  ]
}
🟢search_domains(query)

Search real domain availability + prices (com/net/org/co/io/site and more). Available results include a purchase_url — hand it to the USER to complete checkout; the connector never spends money. Purchased domains connect to their sites in one click.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Domain or name to check, e.g. 'sierratrailcoffee.com'."
    }
  },
  "required": [
    "query"
  ]
}
🟢get_analytics(slug, window)

The site's private first-party traffic: pageviews/visitors/sessions/clicks totals, top pages, referrers, devices. Windows: 24h, 7d, 30d.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "window": {
      "type": "string",
      "enum": [
        "24h",
        "7d",
        "30d"
      ]
    }
  },
  "required": [
    "slug"
  ]
}

권장 프롬프트

search_research
Search for information about [topic] using sitectrl
예상 도구: search_domains
find_specific
Find [specific item] using sitectrl
예상 도구: search_domains
retrieve_data
Get details about [item] from sitectrl
예상 도구: get_site
fetch_info
Fetch [information type] using sitectrl
예상 도구: get_site
list_items
List all [items] available in sitectrl
예상 도구: list_sites

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 13개
검증됨버전이 기록되지 않음도구 13개