01
GET A KEY

Start your trial.

New accounts include 500 free trial credits. The key is shown once and stays in memory until you copy it.

02
CONNECT YOUR CLIENT

Use Claude Desktop, Cursor, VS Code, or Continue.

Paste the matching snippet into the named configuration file, then replace YOUR_API_KEY. Claude Desktop uses the mcp-remote bridge because its file-based configuration is stdio-first; the other clients connect directly over Streamable HTTP.

Claude Desktop · claude_desktop_config.json · Node.js required
{
  "mcpServers": {
    "swamix": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.swamix.com/mcp",
        "--header",
        "Authorization:${SWAMIX_AUTH_HEADER}"
      ],
      "env": { "SWAMIX_AUTH_HEADER": "Bearer YOUR_API_KEY" }
    }
  }
}
Cursor · .cursor/mcp.json
{
  "mcpServers": {
    "swamix": {
      "url": "https://mcp.swamix.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}
VS Code · .vscode/mcp.json
{
  "servers": {
    "swamix": {
      "type": "http",
      "url": "https://mcp.swamix.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}
Continue · config.yaml
mcpServers:
  - name: swamix
    type: streamable-http
    url: https://mcp.swamix.com/mcp
    headers:
      Authorization: Bearer YOUR_API_KEY
03
CALL THE BRIDGE

Check the authenticated balance.

Loading the public tool catalog…

curl · POST /api/tools/call
curl -sS -X POST https://mcp.swamix.com/api/tools/call \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"billing_status","arguments":{}}'
If a key is rejected, it is almost always one of these:
  • Quotes, a leading Bearer or a trailing newline came along with the paste. The service tolerates all three, but the value must still be the whole key.
  • The header was sent twice, or to the wrong path. The MCP endpoint is /mcp (streamable HTTP); the REST bridge is /api/tools/call.
  • The key was revoked or rotated from /account, or its account was deleted. A rejection now says which of those it is.
  • The sign-in link had already been used. Links work once, last 24 hours, and asking for another one does not cancel the link you already hold.
04
CALL MCP DIRECTLY

Use the protocol from Python.

This standard-library example performs the MCP initialize handshake and calls billing_status at the canonical endpoint.

python3 · no SDK required
import json
import urllib.request

ENDPOINT = "https://mcp.swamix.com/mcp"
TOKEN = "YOUR_API_KEY"

def mcp(payload, session_id=""):
    headers = {
        "Authorization": f"Bearer {TOKEN}",
        "Accept": "application/json, text/event-stream",
        "Content-Type": "application/json",
    }
    if session_id:
        headers["mcp-session-id"] = session_id
    request = urllib.request.Request(
        ENDPOINT, data=json.dumps(payload).encode(), headers=headers, method="POST"
    )
    with urllib.request.urlopen(request) as response:
        raw = response.read().decode()
        data_lines = [line[6:] for line in raw.splitlines() if line.startswith("data: ")]
        return response.headers, json.loads(data_lines[-1] if data_lines else raw) if raw else None

headers, initialized = mcp({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
        "protocolVersion": "2025-03-26",
        "capabilities": {},
        "clientInfo": {"name": "swamix-quickstart", "version": "1.0"},
    },
})
session_id = headers.get("mcp-session-id", "")
mcp({"jsonrpc": "2.0", "method": "notifications/initialized"}, session_id)
_, result = mcp({
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {"name": "billing_status", "arguments": {}},
}, session_id)
print(json.dumps(result, indent=2))
05
UNDERSTAND THE CREDITS

Start free, then scale deliberately.

Every new account starts with 500 free trial credits. One credit is worth $0.01 USD, and each tool's per-call cost is shown in /api/tools.

See upgrade options