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.
- On the Keys page issue a key labelled
claude.aiand click Copy connector URL. It looks like https://api.scientistworkbench.com/mcp/k/wb_live_…. - 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.
- Name it
ScientistWorkbench, paste the connector URL as the MCP server URL, and choose No sign-in. - 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.