API reference
Programmatic Sciento. Three shapes. One model.
REST for one-shot calls. MCP for agents calling agents. SDKs for the rest of us.
Quickstart
Authenticate with a workspace-scoped key. Make idempotent requests with an Idempotency-Key header.
curl https://api.scientohq.com/v1/workflows/runs \ -H "Authorization: Bearer $SCIENTO_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -d '{ "workflow": "literature.triage", "input": { "topics": ["Wnt signalling"] } }'
Resources
Workflows
/v1/workflows · list, create, version, archive.
Runs
/v1/runs · start, cancel, replay, fetch traces.
Approvals
/v1/approvals · list queue, approve, reject, comment.
Memory
/v1/memory · search, upsert, forget.
Tools
/v1/tools · register, allowlist, rotate keys.
Evals
/v1/evals · upload sets, trigger runs, fetch reports.
Model Context Protocol
Expose Sciento as a tool to any MCP-compatible agent — Claude Desktop, Cursor, your own runtime.
{
"mcpServers": {
"sciento": {
"command": "npx",
"args": ["-y", "@sciento/mcp-server"],
"env": { "SCIENTO_KEY": "sk_..." }
}
}
}
TypeScript
import { Sciento } from "@sciento/sdk"; const s = new Sciento({ apiKey: process.env.SCIENTO_KEY }); const run = await s.runs.create({ workflow: "methods.draft", input: { eln: "benchling://entries/xyz" }, });
Python
from sciento import Sciento s = Sciento(api_key=os.environ["SCIENTO_KEY"]) run = s.runs.create( workflow="methods.draft", input={"eln": "benchling://entries/xyz"}, )
Events you can subscribe to
| Event | When |
|---|---|
run.completed | Any workflow finishes successfully |
run.failed | Run terminated after retries exhausted |
approval.pending | Human-in-the-loop review needed |
verifier.flagged | Verifier rejected an agent output |
budget.exceeded | Workflow exceeded its credit cap |
All webhook bodies are signed with HMAC-SHA256. Replay-protected with timestamps.