Support
Answers to the most common questions. If you don't find what you need, email us at [email protected].
Getting started
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 with JSON (structured):
PowerShell:
You should get a
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 (
MCP 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
Restart Claude Desktop. You can now ask it things like "any errors in my-worker in the last hour?" directly in chat.
~/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
The MCP tools will be available in any Cursor chat in that project.
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.
HTTP response codes
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 & MCP
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 (
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?"
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 token4. 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.
Account & billing
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 [email protected] 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 [email protected] and we'll delete your account and all associated event data within 48 hours.
Contact
Still stuck?
Email us at [email protected] 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