Daily Feed
Queue todos, note links and text for a future daily note, then read them back, together with your open brain tasks, from one authenticated endpoint any routine or 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:
| Type | What it holds | When it shows up |
|---|---|---|
todo | A task, in text | From its date onward, every day, until you mark it done |
note_link | A BlackOps note, in note (UUID or slug), with an optional text label | On its date only |
text | Freeform text, in text | On its date only |
queue_daily_item({
type: "todo",
text: "Send the config doc to the team",
date: "tomorrow",
context: "work"
})
date is resolved in your site's timezone, the same one your brain task reminder delivery time uses (America/New_York by default). 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.
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:falseto leave brain tasks out. Defaults totrue.domainorsite_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
| Method | Path | Body / params |
|---|---|---|
POST | /api/v2/daily-items | { type, text?, note?, date?, context?, domain? } |
POST | /api/v2/daily-items/{id}/done | none |
GET | /api/v2/daily-feed | date, 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.