MCP server quickstart
Connect a customer-side agent to Euler when you want search, saved slices, receipt verification, and feedback import inside Claude Code, Cursor, or another MCP-compatible tool. The shipped server is an in-process dispatcher today; run it inside your agent workspace next to the Euler Python package. Do not configure a hosted MCP URL until your tenant has one.
Environment
Use the hosted API for project, source, run, episode, and export routes. The MCP server uses local package primitives for search and slice operations, so it does not spend on paid APIs.
export EULER_BASE_URL="https://api.euler.sudotank.com"
export EULER_API_TOKEN="<tenant-api-token>"
export EULER_PROJECT_ID="warehouse-arm"
uv add euler
uv run python - <<'PY'
from euler.integrations import EulerMcpServer
server = EulerMcpServer([])
print([tool.name for tool in server.list_tools()])
PY
Claude Code
Add a local stdio wrapper that imports your tenant episodes, then exposes the Euler tools through your MCP client.
{
"mcpServers": {
"euler": {
"command": "uv",
"args": ["run", "python", "tools/euler_mcp_server.py"],
"env": {
"EULER_BASE_URL": "https://api.euler.sudotank.com",
"EULER_API_TOKEN": "${EULER_API_TOKEN}",
"EULER_PROJECT_ID": "warehouse-arm"
}
}
}
}
Cursor
Use the same local wrapper in .cursor/mcp.json.
{
"mcpServers": {
"euler": {
"command": "uv",
"args": ["run", "python", "tools/euler_mcp_server.py"]
}
}
}
Tools
euler.search_episodes searches the local episode index with structured filters
and vector-ready text.
{
"tool": "euler.search_episodes",
"arguments": {
"text": "failed grasp recovery with object slip",
"task": "pick-place",
"outcome": "failure",
"min_readiness_score": 0.55,
"limit": 10
}
}
euler.create_slice saves the selected result membership as a deterministic
slice definition.
{
"tool": "euler.create_slice",
"arguments": {
"slice_id": "failed-grasp-recovery",
"created_by": "ml-lead@acme.example"
}
}
euler.export_slice creates an export plan. Private exports or large exports
return a human approval required payload instead of mutating data. Route that
checkpoint through Euler approval checkpoints before any destructive or
high-impact action.
{
"tool": "euler.export_slice",
"arguments": {
"slice_id": "failed-grasp-recovery",
"format": "rerun_rrd",
"visibility": "private"
}
}
euler.verify_receipt recomputes a readiness receipt hash before downstream
systems trust an exported episode.
{
"tool": "euler.verify_receipt",
"arguments": {
"receipt": {
"content_hash": "<receipt-hash>"
}
}
}
euler.import_feedback imports human labels or customer review outcomes without
rewriting source episodes.
{
"tool": "euler.import_feedback",
"arguments": {
"records": [
{
"episode_id": "episode_000042",
"label": "failure",
"reviewer": "ml-lead@acme.example"
}
]
}
}
Guardrails
Agents can search episodes, create saved slices, verify receipts, and import feedback. Agents cannot silently perform destructive exports, make private data public, bypass approval checkpoints, or mutate canonical episode data. Approval required responses are the handoff point: show the payload to a human, approve through the Euler checkpoint route, then rerun the export request with the approved checkpoint evidence.