Support

Answers to the most common questions. If you don't find what you need, email us at hello@sulfur.sh.

I signed up — what do I do first?
Go to the dashboard and create an ingest token. Then send a test event. Any HTTP client works — use whatever is easiest for your environment:

curl (simplest — no headers needed):
curl -X POST https://sulfur.sh/e/$YOUR_TOKEN/test -d "hello sulfur"

curl with JSON (structured):
curl -X POST https://sulfur.sh/e/$YOUR_TOKEN/test \
  -H "Content-Type: application/json" \
  -d '{"message":"hello sulfur"}'


PowerShell:
Invoke-RestMethod -Uri "https://sulfur.sh/e/$env:YOUR_TOKEN/test" -Method POST -Body "hello sulfur"

You should get a 202 with an event ID back immediately. Then create an MCP token and add it to Claude Desktop or Cursor — see the quickstart guide.
What's the difference between an ingest token and an MCP token?
Ingest tokens (slf_pub_…) are write-only — they let your code POST events. Put them in environment variables alongside your Worker or Lambda.

MCP tokens (slf_mcp_…) are read-only — they let Claude or Cursor query your events. Put them in your AI client config file, never in application code.
What is a "topic"?
A topic is a named stream of events — think of it as a label for where an event came from inside a project. You set it in the URL: /e/$TOKEN/my-worker creates a topic called my-worker automatically on first use. Use one topic per service, worker, deploy hook, or scheduled job.
How do I connect Claude Desktop?
Create an MCP token from the dashboard, then add this to ~/Library/Application Support/Claude/claude_desktop_config.json:

{ "mcpServers": { "sulfur": { "url": "https://mcp.sulfur.sh", "transport": "streamable-http", "headers": { "Authorization": "Bearer slf_mcp_YOUR_TOKEN" } } } }

Restart Claude Desktop. You can now ask it things like "any errors in my-worker in the last hour?" directly in chat.
How do I connect Cursor?
Add an mcp.json file to your project root at .cursor/mcp.json:

{ "mcpServers": { "sulfur": { "url": "https://mcp.sulfur.sh", "headers": { "Authorization": "Bearer slf_mcp_YOUR_TOKEN" } } } }

The MCP tools will be available in any Cursor chat in that project.

What you'll see when POSTing events, and what it means:

202
Accepted
The event was received and queued. The response body includes the event ID, signature, and timestamp.
429
Too Many Requests
You've hit your daily event limit or burst rate. Events are dropped — no overage charge. Resets at UTC midnight (daily limit) or after 60 seconds (burst). Upgrade to paid for higher limits.
401
Unauthorized
The token in the URL is missing, malformed, or revoked. Check that you're using a slf_pub_… ingest token — not an MCP token. Tokens are case-sensitive.
400
Bad Request
The URL is malformed or the topic name is missing. Note: plain text bodies are valid — you only need Content-Type: application/json if you're sending a JSON object. A plain string body with no headers is fine.
Claude says it doesn't have a sulfur tool — what's wrong?
The most common cause is a config file error. Check that:

1. The config file path is correct for your OS
2. The JSON is valid (no trailing commas)
3. You used an MCP token (slf_mcp_…), not an ingest token
4. You restarted Claude Desktop after editing the config

You can verify Claude loaded the tool by asking: "What MCP tools do you have available?"
Can I use sulfur with ChatGPT?
ChatGPT supports custom GPT connectors, but MCP is not currently a supported protocol there. sulfur works with any client that speaks MCP over HTTP — today that includes Claude Desktop, Cursor, and other MCP-compatible tools. We'll update documentation as more clients add support.
Claude can see my topic summaries but not full payloads.
Full event payloads via event_detail require the paid plan. On the free plan, Claude can describe error signatures and counts, but won't be able to show you the raw JSON body. Upgrade to unlock full payloads.
My events are ingesting but Claude can't find them.
Check the time window. The free plan retains events for 72 hours, while paid keeps 14 days. Also verify your MCP token belongs to the same account and project context as your ingest token.
How do I upgrade to paid?
The paid plan capabilities exist today, but automated billing is not fully self-serve yet. For current upgrade handling, email hello@sulfur.sh from the account you want updated.
How do I revoke a token?
From the dashboard, find the token and click Revoke. Revocation is instant. You can create a new token at any time — this is useful if an ingest token is accidentally exposed in version control.
Can I delete my account?
Email hello@sulfur.sh and we'll delete your account and all associated event data within 48 hours.

Still stuck?

Email us at hello@sulfur.sh with your account email and a description of the issue. Include the event ID or signature if you have one — it helps us find the relevant logs quickly.

Email support