Skip to main content
Base URL: https://simlab-api.collinear.ai Generate task bundles (instructions, rubrics, verifiers) from your tool definitions. Task generation is asynchronous — submit a job, poll for status, then download results.

Submit a Task Generation Job

POST /task-gen
Request body:
{
  "tools": [
    {
      "name": "send_email",
      "description": "Send an email to the specified recipient.",
      "parameters": {
        "type": "object",
        "properties": {
          "to": { "type": "string" },
          "subject": { "type": "string" },
          "body": { "type": "string" }
        },
        "required": ["to", "subject", "body"]
      }
    }
  ],
  "num_tasks": 10,
  "model": "claude-sonnet-4-6",
  "preset": "recruiting",
  "complexity": { "easy": 0.3, "medium": 0.5, "hard": 0.2 }
}
FieldTypeRequiredDescription
toolslist[object]YesMCP tool definitions (JSON from a /tools endpoint)
num_tasksintNoNumber of tasks to generate (default: 10, max: 200)
modelstringNoLLM model for generation (default: claude-sonnet-4-6)
presetstringNoBuilt-in preset (e.g. "recruiting") — auto-fills agent, domain, workflows
agentobjectNoAgent identity: { "role": "...", "description": "..." }
domainobjectNoDomain context: { "name": "...", "conventions": "...", "policies": [...] }
categorieslist[object]NoTask categories: [{ "id": "...", "label": "..." }]
workflowslist[object]NoExample workflows: [{ "name": "...", "steps": ["..."] }]
stakeholderslist[object]NoStakeholder roles: [{ "role": "...", "typical_asks": "..." }]
environmentobjectNoBranding: { "email_domain": "...", "agent_email": "..." }
complexityobjectNoDifficulty distribution: { "easy": 0.3, "medium": 0.5, "hard": 0.2 }
diversityobjectNoDiversity config for scenario variation
Response: 200 OK
{
  "job_id": "tg_abc123",
  "status": "pending",
  "progress": null,
  "created_at": "2026-03-07T06:20:00Z"
}

Check Job Status

GET /task-gen/{job_id}
Response: 200 OK
{
  "job_id": "tg_abc123",
  "status": "running",
  "progress": "Step 4/10: formatting tasks",
  "created_at": "2026-03-07T06:20:00Z"
}
StatusMeaning
pendingJob queued, not yet started
runningGeneration in progress
completedResults ready for download
failedGeneration failed (see error field)

Download Results

GET /task-gen/{job_id}/results
Response: 200 OK (only when status is completed)
{
  "job_id": "tg_abc123",
  "tasks": [
    { "filename": "task_001.json", "content": "{ ... }" }
  ],
  "instructions": [
    { "filename": "task_001_instruction.md", "content": "..." }
  ],
  "rubrics": [
    { "filename": "task_001_rubric.md", "content": "..." }
  ],
  "verifiers": [
    { "filename": "task_001_verifier.py", "content": "..." }
  ]
}
Returns 202 if the job is still running, 404 if not found, 500 if the job failed. CLI shortcut:
collinear tasks-gen run --config config.toml --num-tasks 10