Documentation

Connect an AI agent to your SystemSculpt account

Updated for SystemSculpt 6.18 ·

Claude Code, Codex and other MCP apps can read and manage your own SystemSculpt account at https://systemsculpt.com/mcp. You sign in once in the browser and choose what the app may do. No license key, copied token or paid plan is needed to connect.

On this page

Connect

Add https://systemsculpt.com/mcp to your app as a remote (Streamable HTTP) MCP server, with OAuth. The app opens the SystemSculpt sign-in page. Sign in, or sign up there if you are new, then read the consent page and choose Allow. The app keeps the token; you never copy one.

  • The consent page lists every permission the app asked for. Some apps ask for all of them at once. Deny if that is more than you want.
  • The token works only for your account. No tool takes another person, email or account ID.
  • An app that asked for less gets insufficient_scope on a tool outside its grant. Sign in again from the app to add that permission.
  • An unpaid or expired account can still connect and use every tool except sending and processing captures.

Apps we checked

Checked on November 1, 2026 on a Mac, with a test account: the app's own sign-in, then one read of that account through the app's own MCP client. "Not checked yet" means the setup follows the app's documentation, but we have not run it.

AppHow it signs inStatus
Claude Code 2.1.316Client ID metadata documentChecked: sign-in, then get_account
Codex CLI 0.165Client ID metadata documentChecked: sign-in, then get_plan
opencode 1.19.5Dynamic client registrationChecked: sign-in, then get_account
Claude (claude.ai) and Claude DesktopCustom connectorNot checked yet: our test agents may not sign in to Claude accounts
ChatGPTCustom connector (developer mode)Not checked yet: needs a ChatGPT plan and workspace that allow custom MCP servers
CursorDynamic client registrationNot checked yet: not installed on our test Mac
VS CodeOAuth sign-in in the browserNot checked yet: its sign-in opens the desktop browser, which our test run could not use
Gemini CLIDynamic client registrationNot checked yet: not installed on our test Mac

Claude Code

Terminal
claude mcp add --transport http systemsculpt https://systemsculpt.com/mcp

Start claude, run /mcp, choose systemsculpt, then Authenticate. Allow in the browser. Claude Code asks for every permission at once. claude mcp remove systemsculpt removes it.

Codex

Terminal
codex mcp add systemsculpt --url https://systemsculpt.com/mcp
codex mcp login systemsculpt

Codex finds the sign-in itself and opens the browser. On a machine without a browser, add --no-browser and paste the address the browser lands on. Codex asks for read access first. codex mcp logout systemsculpt disconnects.

opencode

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "systemsculpt": { "type": "remote", "url": "https://systemsculpt.com/mcp", "enabled": true }
  }
}
Terminal, in that project
opencode mcp auth systemsculpt
opencode mcp list

Leave OAuth on (the default). Do not add an Authorization header.

Claude and Claude Desktop

Not checked yet. In Claude, open Settings → Connectors → Add custom connector, name it SystemSculpt, enter https://systemsculpt.com/mcp and choose Add, then Connect. Claude Desktop uses the same connectors as your Claude account. On Team and Enterprise plans an owner adds it first. See Claude's custom connector steps (opens in a new tab).

ChatGPT

Not checked yet. Where your ChatGPT plan and workspace allow custom MCP servers, add https://systemsculpt.com/mcp with OAuth. See OpenAI's plan and workspace rules (opens in a new tab).

Cursor

~/.cursor/mcp.json
{
  "mcpServers": {
    "systemsculpt": { "url": "https://systemsculpt.com/mcp" }
  }
}

Not checked yet. In Cursor's MCP settings, connect SystemSculpt and allow it in the browser. The Cursor CLI uses the same file: agent mcp login systemsculpt.

VS Code

.vscode/mcp.json
{
  "servers": {
    "systemsculpt": { "type": "http", "url": "https://systemsculpt.com/mcp" }
  }
}

Not checked yet. Run MCP: List Servers, start systemsculpt and allow it in the browser when VS Code asks.

Gemini CLI

~/.gemini/settings.json
{
  "mcpServers": {
    "systemsculpt": { "httpUrl": "https://systemsculpt.com/mcp", "oauth": { "enabled": true } }
  }
}

Not checked yet. Start Gemini CLI and run /mcp auth systemsculpt.

HTTP and your own client

Every tool is also an HTTPS endpoint under /api/account/, with the same token, input and { status, data } result. A script uses the token its OAuth client received; there is no separate key to create.

Terminal
curl -s https://systemsculpt.com/api/account/plan \
  -H "Authorization: Bearer $SYSTEMSCULPT_TOKEN"
  • /mcp answers 401 with WWW-Authenticate: Bearer resource_metadata="https://systemsculpt.com/.well-known/oauth-protected-resource/mcp" until a token is sent.
  • That metadata names the resource https://systemsculpt.com/mcp, the authorization server https://clerk.systemsculpt.com and every scope.
  • The authorization server's metadata lists its authorize, token, registration and revocation endpoints. A client identifies itself with a client ID metadata document (an HTTPS client_id) or registers dynamically.
  • Use the authorization code flow with PKCE (S256) and resource=https://systemsculpt.com/mcp. A token without that resource is refused.
  • Ask for offline_access to get a refresh token. Refreshing ends the previous access token.
  • Send Authorization: Bearer <token> in a header, never in a URL. { "error": { "code", "message" } } is the HTTP error body.
  • Keep the token in a secret store, not in a prompt, file or log.

Tools, endpoints and permissions

MCP tools/list gives each tool's input and output JSON Schema, a title and hints. Every tool that changes something is marked destructive, so your app can ask before it runs. Billing tools also list their money effects in _meta["systemsculpt.com/effects"].

ToolHTTP route and permission
get_accountGET /api/account/profile, needs account:read
get_planGET /api/account/plan, needs account:read
get_balanceGET /api/account/balance, needs account:read
get_usageGET /api/account/usage, needs account:read
get_billing_preferencesGET /api/account/billing-preferences, needs account:read
get_newsletter_preferenceGET /api/account/newsletter, needs account:read
set_newsletter_preferencePOST /api/account/newsletter, needs account:preferences
list_giftsGET /api/account/gifts, needs account:read
get_gift_codeGET /api/account/gifts/code, needs gifts:manage
send_giftPOST /api/account/gifts/send, needs gifts:manage
redeem_giftPOST /api/account/gifts/redeem, needs gifts:manage
get_license_keyGET /api/account/license-key, needs credentials:read
list_sign_in_sessionsGET /api/account/sessions, needs sessions:manage
revoke_sign_in_sessionPOST /api/account/sessions/revoke, needs sessions:manage
get_account_deletion_statusGET /api/account/deletion, needs account:read
request_account_deletionPOST /api/account/deletion, needs account:delete
ToolHTTP route and permission
create_billing_portal_linkPOST /api/account/billing-portal, needs billing:portal
get_renewal_consent_offerPOST /api/account/billing/consent-offer, needs billing:manage
cancel_subscriptionPOST /api/account/subscription/cancel, needs billing:manage
resume_subscriptionPOST /api/account/subscription/resume, needs billing:manage
cancel_recurring_creditsPOST /api/account/credits/recurring/cancel, needs billing:manage
resume_recurring_creditsPOST /api/account/credits/recurring/resume, needs billing:manage
set_auto_reloadPOST /api/account/credits/auto-reload, needs billing:manage
quote_checkoutPOST /api/account/checkout/quote, needs account:read
create_checkout_linkPOST /api/account/checkout, needs billing:checkout
get_checkout_statusGET /api/account/checkout/status, needs account:read
ToolHTTP route and permission
list_capturesGET /api/account/captures, needs captures:read
get_captureGET /api/account/captures/{capture_id}, needs captures:read
create_capturePOST /api/account/captures, needs captures:process
get_capture_upload_part_urlGET /api/account/captures/{capture_id}/upload/part-url, needs captures:process
complete_capture_uploadPOST /api/account/captures/{capture_id}/upload/complete, needs captures:process
run_capture_actionPOST /api/account/captures/{capture_id}/actions, needs captures:read and captures:process
ask_capturesPOST /api/account/captures/ask, needs captures:read and captures:process
delete_captureDELETE /api/account/captures/{capture_id}, needs captures:delete
  • Restarting a charge (resume_subscription, resume_recurring_credits, turning on or raising set_auto_reload) needs the person to accept the exact offer from get_renewal_consent_offer. The agent shows its text word for word and passes its offerFingerprint only after the person agrees. Connecting the app is not that agreement.
  • create_checkout_link returns a Stripe checkout page. Nothing is charged until the person pays there. A renewing purchase also needs the quoted terms accepted.
  • create_capture, complete_capture_upload, run_capture_action and ask_captures use credits and need an idempotency key: MCP idempotency_key, HTTP Idempotency-Key header. A repeat returns the first result and charges once.
  • A capture reaches your vault only when the Obsidian plugin syncs it. get_capture shows delivery.state: "verified" once the plugin confirmed the file; an agent cannot mark it delivered.
  • get_license_key returns your existing plugin key, a full credential. Grant credentials:read only to an app you trust with it.
  • request_account_deletion starts the same permanent deletion as the dashboard. Notes in your vault stay. After it, every other tool answers ACCOUNT_DELETION_PENDING.

Dashboard actions and their agent route

ActionAgent route
Plan and renewalSee plan, renewal and payment status: get_plan, get_billing_preferences
CreditsSee credits and cycle dates: get_balance
Usageget_usage
License keyget_license_key
Cancel the plancancel_subscription
Resume the planget_renewal_consent_offer, then resume_subscription. The person accepts the renewal terms.
Recurring credit packsCancel or resume: cancel_recurring_credits, resume_recurring_credits. Resuming needs the person to accept the terms.
Auto-reloadOn, off or a new limit: set_auto_reload. Turning on or raising the limit needs the person to accept the terms.
Buy plan or creditsquote_checkout, create_checkout_link, get_checkout_status. The person pays on Stripe's page.
Card and invoicescreate_billing_portal_link. Browser only: card changes, invoices, billing details and plan switches are in Stripe's billing portal, which the person opens from this link.
GiftsSee: list_gifts
Gift codeCopy: get_gift_code
Send a giftSend or resend: send_gift
Redeem a giftredeem_gift
Product newsOn or off: get_newsletter_preference, set_newsletter_preference
Browser sessionsSee and sign out: list_sign_in_sessions, revoke_sign_in_session
Sign-in detailsBrowser only: email, password and Google sign-in changes are confirmed by the sign-in service with the person.
Delete the accountrequest_account_deletion, get_account_deletion_status
CapturesRead, send, process or delete: capture tools (above)
Saved in the vaultPlugin only: the Obsidian plugin writes the vault, so only its receipt counts.
Connect the pluginPlugin only: started from the plugin, which holds the one-time verifier for that vault.
Disconnect an agentIn that app (see each app above). There is no list of connected apps yet. To cut off an app you can't reach, contact support.

Still need help? Contact SystemSculpt.