List AI agents

GET/api/v1/agents

The background AI agents installed in the workspace, with their schedules, last run and open finding counts.

Example request

curl "https://crowdstack.org/api/v1/agents" \
  -H "Authorization: Bearer $CROWDSTACK_API_KEY"

Example response

{
  "agents": [
    {
      "id": "cmf3k2x9a0211abcd",
      "name": "Deal risk review",
      "description": "Flags deals likely to slip.",
      "openFindings": 3,
      "routines": [
        {
          "id": "cmf3k2x9a0212abcd",
          "schedule": "daily",
          "enabled": true,
          "lastRunAt": "2026-09-15T06:00:00.000Z"
        }
      ]
    }
  ]
}

List agent findings

GET/api/v1/agents/findings

Findings the AI agents have raised, newest first: what record, why it matters, the evidence, and the action the agent proposed. Filter by agent, status, or the record they are about.

Query parameters

ParameterTypeDescription
agentIdstring
statusopen | accepted | dismissed
entityTypestringdeal, contact, ticket, task, subscription and so on.
entityIdstring
limitnumberPage size, 1 to 100. Default 50.
cursorstringThe nextCursor from the previous page.

Example request

curl "https://crowdstack.org/api/v1/agents/findings?status=open" \
  -H "Authorization: Bearer $CROWDSTACK_API_KEY"

Example response

{
  "findings": [
    {
      "id": "cmf3k2x9a0210abcd",
      "agent": {
        "id": "cmf3k2x9a0211abcd",
        "name": "Deal risk review"
      },
      "entityType": "deal",
      "entityId": "cmf3k2x9a0080abcd",
      "entityLabel": "Acme renewal",
      "priority": "high",
      "score": 82,
      "summary": "No activity in 21 days with close date in 9 days.",
      "narrative": "The deal has had no notes, emails or stage moves since 25 August...",
      "evidence": {
        "lastActivityAt": "2026-08-25T10:00:00.000Z"
      },
      "proposedAction": {
        "type": "task",
        "title": "Check in with Jane about the renewal"
      },
      "status": "open",
      "ownerId": null,
      "taskId": null,
      "resolvedAt": null,
      "createdAt": "2026-09-15T06:00:00.000Z"
    }
  ],
  "nextCursor": null
}

Resolve a finding

PATCH/api/v1/agents/findings/:id

Mark a finding accepted (done) or dismissed, or reopen it. Accepting here does not create the proposed task; create one with create_task if you want it.

Request body

FieldTypeDescription
statusrequiredopen | accepted | dismissed

Responses

StatusMeaning
200Body: { finding }.
404No finding with that id.

Example request

curl -X PATCH https://crowdstack.org/api/v1/agents/findings/cmf3k2x9a0001abcd \
  -H "Authorization: Bearer $CROWDSTACK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "dismissed"
  }'

Example response

{
  "finding": {
    "id": "cmf3k2x9a0210abcd",
    "agent": {
      "id": "cmf3k2x9a0211abcd",
      "name": "Deal risk review"
    },
    "entityType": "deal",
    "entityId": "cmf3k2x9a0080abcd",
    "entityLabel": "Acme renewal",
    "priority": "high",
    "score": 82,
    "summary": "No activity in 21 days with close date in 9 days.",
    "narrative": "The deal has had no notes, emails or stage moves since 25 August...",
    "evidence": {
      "lastActivityAt": "2026-08-25T10:00:00.000Z"
    },
    "proposedAction": {
      "type": "task",
      "title": "Check in with Jane about the renewal"
    },
    "status": "dismissed",
    "ownerId": null,
    "taskId": null,
    "resolvedAt": "2026-09-15T11:00:00.000Z",
    "createdAt": "2026-09-15T06:00:00.000Z"
  }
}