Ettajer for Developers

MCP

Model Context Protocol over HTTP JSON-RPC. Same Bearer auth and scopes as the REST API — Claude and Cursor use one connected store.

Endpoint

Production

https://www.ettajer.com/api/v1/mcp

Method POST · Header Authorization: Bearer … · Body JSON-RPC 2.0

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

Connect a client

Create an app in the console with the correct redirect URIs, then complete OAuth. Do not put client secrets in browser code.

Claude

Add a custom connector with the MCP URL above. Advanced settings: client ID and secret from your app. Callback https://claude.ai/api/mcp/auth_callback.

Cursor

Point MCP at the production URL. Use ${env:ETTAJER_MCP_CLIENT_SECRET} for the secret. Complete interactive OAuth in Cursor settings.

Recommended tool flow

About 32 tools. Prefer batch over recreating themes.

  • Discover

    get_contextget_theme_schemaget_productsget_collections

  • Design

    create_themeapply_theme_batchupdate_sectionget_themepreview_theme

  • Publish

    Protected

    publish_theme

    Requires themes:publish — keep off for AI clients by default.

Preview & publish

preview_theme

Short-lived signed preview URL (~10 minutes). Read-only. Works on home, product, collection, and custom pages. Does not publish.

publish_theme

Requires themes:publish. Transactional. Cart and checkout stay on Ettajer.

Resources

Readable via resources/list and resources/read.

  • Store contextettajer://store
  • Theme schemaettajer://theme-schema
  • Productsettajer://products
  • Collectionsettajer://collections
  • Navigationettajer://navigation

Rate limiting

Default RATE_LIMIT_BACKEND=memory is fine for local or single-instance use. Production multi-instance should use RATE_LIMIT_BACKEND=redis with Upstash REST credentials. In-memory limits are not shared across instances.

Ready to connect?

Create an app, add redirect URIs, then authorize your store.

Open console