We use cookies to measure site usage with Google Analytics. We only turn that on if you say yes. See our Privacy Policy.

Documentation

Daily Feed

Queue todos, note links, and text for a future daily note, then read them back with your open brain tasks from one endpoint any script can call.

The daily feed is a queue for your daily note. Say "put this in tomorrow's daily note" mid-session and it lands on the right day. Whatever builds your daily note then reads that day's feed from one endpoint and renders it.

Queueing an item

Use the queue_daily_item MCP tool. There are three item types:

TypeWhat it holdsWhen it shows up
todoA task, in text, with an optional note (UUID or slug) it refers toFrom its date onward, every day, until you mark it done
note_linkA BlackOps note, in note (UUID or slug), with an optional text labelOn its date only
textFreeform text, in textOn its date only
queue_daily_item({
  type: "todo",
  text: "Send the config doc to the team",
  date: "tomorrow",
  context: "work"
})

date is resolved using this timezone order: (1) the daily note timezone for the specified context (the Timezone field in Admin → Daily Notes for that context); (2) any enabled daily note config row for the site — this is the fallback for no-context and unconfigured-context items, so they file on the correct local day rather than UTC; (3) the brain task reminder timezone; (4) America/New_York — never the server clock. The response includes timezone and timezone_source so you can echo the resolved date back to the user. It accepts today, tomorrow, a weekday (friday or next monday both mean the next one after today), in 3 days, or an ISO date (2026-10-01). If you leave it out, the item goes on today. A date in the past, or a phrase the tool can't read, is rejected with an error. It never quietly becomes today.

A note link must point at a note on the same site. The feed resolves it to the note's current title, its admin URL, and its vault path. If the note is later deleted, the link drops out of the feed.

A todo can carry a note too, when the task is about a note. It must also be on the same site, and the todo comes back with a note object (id, title, url, vault_path). If that note is later deleted, the todo stays and just loses its link.

When today's note is already generated

Queuing for a day whose daily note has already been generated doesn't wait for the next scheduled run — the item is inserted straight into the live file's matching section (see Who owns the note for how that's done without disturbing anything else in it). The response says which happened:

{
  "ok": true,
  "item": {
    "id": "…", "item_type": "todo", "body": "Send the config doc to the team",
    "target_date": "2026-09-24", "context": "work", "status": "open",
    "timezone": "America/New_York",
    "note_delivery": {
      "status": "inserted_into_existing_note",
      "applied_to_notes": [
        { "config_id": "…", "context": "work", "note_id": "…", "destination": "vault", "result": "inserted" }
      ]
    }
  }
}

note_delivery.status is inserted_into_existing_note or queued_for_future_generation (the item still exists and shows up in the feed either way — this only says whether it also reached an already-written note right now). applied_to_notes has one entry per daily note it reached: result is inserted (added under the section's own heading), fallback (added under an Added today section because that heading wasn't in the file), or duplicate (already there — queuing the same item twice is a no-op); destination is vault when it reached the synced file, or db_only when the note has no vault file to write to.

Contexts

Pass context (for example work or personal) to keep separate daily notes apart. A feed that asks for a context gets only the items with exactly that context. A feed with no context gets everything. Contexts are stored as lowercase slugs, so Work and work are the same.

Marking items done

complete_daily_item takes an item_id and removes the item from every feed from then on. This is how a todo stops rolling forward. You can also use it to drop a queued link or text before its day.

Reading the feed

get_daily_feed (MCP) and GET /api/v2/daily-feed (REST) return the same thing. Reading the feed is read-only: pulling it never consumes or marks anything.

curl -H "Authorization: Bearer $BLACKOPS_TOKEN" \
  "https://blackopscenter.com/api/v2/daily-feed?date=tomorrow&context=work"

Query parameters:

  • date: same formats as above. Defaults to today in the site timezone.
  • context: optional scope.
  • include_brain_tasks: false to leave brain tasks out. Defaults to true.
  • domain or site_id: optional. Defaults to the token's site.

The token is the same per-user API token the rest of the v2 API uses, so a script or scheduled routine can call the feed without a browser session.

The response keeps a stable shape:

{
  "ok": true,
  "date": "2026-09-24",
  "timezone": "America/New_York",
  "context": "work",
  "todos": [
    { "id": "…", "text": "Send the config doc to the team", "context": "work",
      "queued_for": "2026-09-22", "carried_over": true, "days_carried": 2 }
  ],
  "note_links": [
    { "id": "…", "note_id": "…", "title": "Standards meeting notes",
      "url": "https://blackopscenter.com/admin/notes/…",
      "vault_path": "notes/work/2026-09-23-standards-meeting.md",
      "label": null, "context": "work" }
  ],
  "texts": [],
  "brain_tasks": [
    { "id": "…", "brain_id": "…", "brain_name": "House", "description": "Photo of the fence",
      "due_date": "2026-09-23", "past_due": true, "open_days": 4 }
  ]
}

brain_tasks holds your own open tasks: addressed to you, not silenced, across all your brains. Tasks waiting on someone you shared a brain with stay in the reminder digest and don't appear here. Brains don't have contexts, so context doesn't filter brain tasks. Use include_brain_tasks=false for a daily note that shouldn't carry them.

REST reference

MethodPathBody / params
POST/api/v2/daily-items{ type, text?, note?, date?, context?, domain? }
POST/api/v2/daily-items/{id}/donenone
GET/api/v2/daily-feeddate, context, include_brain_tasks, domain

Related

  • Daily Notes: BlackOps can generate the daily note from this feed itself, with your calendar, on a schedule. Todos it writes can be checked off in Obsidian.
Want this page as machine-readable markdown? GET /docs/features/daily-feed.md