Skip to main content
These are the tools for the half of Driftless that is not documentation: Projects (the card loop) and Collections (the operational substrate). They are action-based tools: pass action to pick the operation. Writes need the work:write scope; an API key acts with the role of the member who created it.

Projects and cards

driftless_project_card action:'next' is the loop tick: it returns the next actionable card plus its context bundle in one call.
ToolActionsMain paramsNotes
driftless_projectlist, get, setid (omit to create), title, goaldoes not expose playbook_slug yet
driftless_project_cardlist, get, add, set, move, delete, nextproject_id, card_id, status, ownernext returns { card, context_bundle, project_done }
Permissions: reads are member-level; writes need work:write. Availability: Available. Card verification is report-and-surface: the server stores the validate command and the result you report, and never runs it.
driftless_project_card action:'next' project_id:'<project-id>'
  → { card: { id, status }, context_bundle: [ ... ], project_done: false }

Collections and records

driftless_collection action:'retrieve' delivers both halves of the seam at once: the relevant records plus the criterion Knowledge to read first. For criterion only, use action:'context'.
ToolActionsMain paramsNotes
driftless_collectionlist, get, add, update, doctor, context, retrieveid, query, status, view, limit, cursorretrieve returns { records, nextCursor, criterion, criterion_missing }
driftless_collection_recordlist, get, add, updatecollection_id, record_id, fields, status, entity_idstatus is validated against the collection’s stages
Permissions: reads are member-level; writes need work:write. Availability: Available.
driftless_collection action:'retrieve' id:'<collection-id>' status:'qualified' limit:25
  → { records: [ ... ], nextCursor, criterion: [ ... ], criterion_missing: [] }

Entities

An Entity is a cross-collection identity that records point at. It upserts idempotently on (kind, dedup_key): writing the same pair twice updates it instead of creating a duplicate.
ToolActionsMain paramsNotes
driftless_entitylist, get, upsertkind, name, dedup_key, attributesidempotent on (kind, dedup_key)
Permissions: list / get are member-level; upsert needs work:write. Availability: Available.
driftless_entity action:'upsert' kind:'company' name:'Acme' dedup_key:'acme.com'

Permissions

ScopeCovers
work:writeCreate and update projects, cards, collections, records, and entities
member (read)list / get / next / context / retrieve / doctor
There is no separate scope per surface; work:write covers the whole work and operations plane.

Availability

CapabilityState
Projects, cards, and the next loopAvailable
Collections, records, and the criterion seamAvailable
Entity dedup on (kind, dedup_key)Available
playbook_slug on driftless_projectNot available (set it from the CLI or API)
Server-side execution of a card’s validateNot available (report-and-surface only)