⚗ ScientistWorkbench

Documentation

Get an API key from the dashboard, then point your agent at https://api.scientistworkbench.com. The same key authenticates the HTTP API and the MCP server at https://api.scientistworkbench.com/mcp.

Connect

claude mcp add -s user --transport http science https://api.scientistworkbench.com/mcp \
  --header "Authorization: Bearer wb_live_…"

Then /mcp inside Claude Code lists the server; tools appear as mcp__science__science_submit etc. Set MCP_TIMEOUT generously or loop on science_wait.

Claude, Claude Desktop and Claude Cowork — add it once as a custom connector and it is available on every surface you sign in to with that account. Custom connectors cannot send an Authorization header, so the key travels in the URL.

  1. On the Keys page issue a key labelled claude.ai and click Copy connector URL. It looks like https://api.scientistworkbench.com/mcp/k/wb_live_….
  2. Customize → Connectors → Add custom connector. On Team and Enterprise an owner adds it under Organization settings → Connectors → Add → Custom → Web, and members then click Connect.
  3. Name it ScientistWorkbench, paste the connector URL as the MCP server URL, and choose No sign-in.
  4. Click Add, switch the connector on from the + menu → Connectors, then ask for science_test. It should answer "Connected as <your workspace>".

The key is visible in your connector settings, so use a dedicated key and revoke it from the Keys page if a device is lost; our logs redact it. If your connector dialog offers Request headers, the plain https://api.scientistworkbench.com/mcp URL with header authorization: Bearer wb_live_… works too. Jobs take minutes: ask the assistant to keep calling science_wait.

Cursor and other MCP clients — .cursor/mcp.json, or the equivalent config file:

{
  "mcpServers": {
    "science": {
      "url": "https://api.scientistworkbench.com/mcp",
      "headers": { "Authorization": "Bearer wb_live_…" }
    }
  }
}

Any client that speaks MCP over streamable HTTP with a bearer header works the same way; clients that only speak stdio need a local bridge — email us if you need one.

from claude_agent_sdk import ClaudeAgentOptions, query

opts = ClaudeAgentOptions(
    mcp_servers={"science": {"type": "http", "url": "https://api.scientistworkbench.com/mcp",
                             "headers": {"Authorization": "Bearer wb_live_…"}}},
    allowed_tools=["mcp__science__science_submit", "mcp__science__science_wait",
                   "mcp__science__science_result", "mcp__science__science_artifact"],
)
async for msg in query(prompt="QC the attached CRO IC50 report …", options=opts):
    print(msg)
curl -s https://api.scientistworkbench.com/jobs -H "Authorization: Bearer wb_live_…" \
  -F 'spec={"prompt":"QC this CRO IC50 report and say which values can be used as reported","company":"Acme"}' \
  -F files=@plate1.xlsx
# → {"job_id":"sci-20260914-…","status":"queued"}
curl -s https://api.scientistworkbench.com/jobs/sci-20260914-…/result -H "Authorization: Bearer wb_live_…"

Guides

Product guide

Access, tokens, job classes, limits, what you get back, data handling.

HTTP API

Submit, follow, read results; how an agent should interface with the service.

MCP server

Eight tools and science:// resources for Claude Code, Claude Cowork, Cursor and the Agent SDK.