Documentation / Agents & MCP

Agents & MCP

Sitelas is a website builder your agent can drive. Connect it to Claude, or use an API key from any script.

Last updated: September 15, 2026

The connector

Sitelas is a remote MCP server, so an AI agent can build and run your sites in natural conversation. In Claude it is one click; every other client takes a few lines of config:

  1. Open Sitelas in Claude’s connector directory and choose Add.
  2. Sign in to Sitelas (Google) and approve. Claude registers itself automatically — there’s no client ID to enter.

Everything else reads a config file rather than the directory. Point it at https://sitelas.com/api/mcp and sign in the same way — the exact shape differs by client:

Claude (web, desktop, mobile)No config — add it from the connector directory above.
Claude CodeRun this in your terminal
claude mcp add --transport http sitelas https://sitelas.com/api/mcp
Cursor~/.cursor/mcp.json (or .cursor/mcp.json per project)
{
  "mcpServers": {
    "sitelas": { "url": "https://sitelas.com/api/mcp" }
  }
}
VS Code.vscode/mcp.json — note the different root key and required type
{
  "servers": {
    "sitelas": { "type": "http", "url": "https://sitelas.com/api/mcp" }
  }
}
Antigravity (CLI, IDE & 2.0)~/.gemini/config/mcp_config.json — note serverUrl, not url or httpUrl
{
  "mcpServers": {
    "sitelas": { "serverUrl": "https://sitelas.com/api/mcp" }
  }
}
Gemini CLI~/.gemini/settings.json — note httpUrl, not url
{
  "mcpServers": {
    "sitelas": { "httpUrl": "https://sitelas.com/api/mcp" }
  }
}

Using a different MCP client? Sitelas is listed on Smithery, which generates the right config for a much longer list of clients.

Two ways to authenticate, same account, same tools:

Interactive connector

Who
You, in Claude / a browser
How
OAuth 2.1 — sign in once, approve. Claude registers itself (DCR).
When
Everyday use with a human present.

API key (headless)

Who
An agent, script, or automation
How
A bearer key (stl_pat_…) you generate in Account → API keys.
When
Unattended / programmatic — no browser.
Both resolve to the same set of tools, scoped to your account by database row-level security.

What your agent can do

The connector exposes tools across the full lifecycle: discover templates; create, edit, and publish sites (surgical patches, brand & palette changes, image search, URL cloning); manage content collections; read submissions, contacts, and analytics; schedule jobs; and configure custom domains. Destructive actions (like deleting a site) are annotated and require explicit confirmation.

Example prompts

“Build a portfolio for a Brooklyn wedding photographer — warm, editorial, with a contact form.” · “Any new contact-form messages this week?” · “Add a Pricing page with three tiers, then publish.”

Tool reference

The connector’s tools are the same whether you drive them from a chat or an agent with an API key. Here they are by category:

CategoryWhat it doesKey tools
DiscoverBrowse templates, section archetypes, and primitives; score a template against a brief.list_site_templates · select_template_for_brief · list_primitives
ReadList sites and inspect one — pages, theme, versions, and what changed.list_sites · get_site · get_site_overview · get_version_diff
Create & editCreate a site from a template, then customize — surgical patches, brand & palette, image search, URL cloning.create_site_from_template · patch_nodes · apply_brand · apply_palette · replace_images_from_search · capture_url
Pages & structureAdd, delete, duplicate, and reorder pages; edit per-page SEO.add_page · delete_page · duplicate_page · update_seo
Content collectionsCreate collections (blog, projects, listings) and manage their items.create_collection · add_content_item · edit_content_item · delete_content_item
Publish & versionPreview a draft, publish whole-site or per-URL, unpublish, one-step revert, diff versions.get_preview · publish_site · unpublish_site · revert_site · get_version_diff
Inbox & CRMRead and reply to submissions; view contacts and their activity.list_submissions · read_submission · draft_reply_to_submission · list_contacts
AnalyticsRead pageviews, top paths, and recent activity.get_analytics · top_pages · summarize_recent_activity
ScheduleSchedule a publish or unpublish for later; list and cancel jobs.schedule_publish · list_scheduled_jobs · cancel_scheduled_job
Domains & SEOConnect and verify a custom domain; set site-wide search settings, language, business details (address, type, profiles) and Search Console verification tags; connect your Google Analytics, Tag Manager, Meta Pixel or Plausible; generate a sitemap.set_custom_domain · verify_custom_domain · update_seo · set_tracking_codes · generate_sitemap
Design reviewSelf-review a site against design and health checks before shipping.critique_design · site_health_check · verify_site

Destructive tools (like delete_site or delete_page) are annotated destructive and require an explicit confirmation before they run.

API keys (headless access)

The connect flow above uses interactive OAuth — a human signs in. For an agent, script, or automation that runs without a browser, create an API key in Dashboard → Account → API keys (shown once) and send it as a bearer header to /api/mcp. No OAuth round-trip.

Account → API keys — create a key (shown once), see last-used, revoke.
Account → API keys — create a key (shown once), see last-used, revoke.

Claude Code

claude mcp add --transport http sitelas https://sitelas.com/api/mcp \
  --header "Authorization: Bearer $SITELAS_API_KEY"

Anthropic API (build your own agent)

client.beta.messages.create(
    model="claude-opus-5",
    max_tokens=16000,
    betas=["mcp-client-2025-11-20"],
    mcp_servers=[{
        "type": "url",
        "url": "https://sitelas.com/api/mcp",
        "name": "sitelas",
        "authorization_token": os.environ["SITELAS_API_KEY"],
    }],
    tools=[{"type": "mcp_toolset", "mcp_server_name": "sitelas"}],
    messages=[{"role": "user",
               "content": "Build a portfolio site and publish it."}],
)

Any MCP client / raw HTTP

curl -X POST https://sitelas.com/api/mcp \
  -H "Authorization: Bearer stl_pat_…" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

The key acts on your account with the same ownership scoping as the connector — the same tool catalog, no human in the loop. Set an optional expiry, watch its last-used date, and revoke it any time from the same screen.