Caches and vector indexes are derived retrieval state, never a second record anybody has to edit, which is what keeps the team's existing workflow intact while the agent gains context between sessions. On top sits the knowledge-graph layer, for durable facts that no single task backend can hold: proposed by an agent from anywhere, ratified by a human, queried in one place.
An MCP server and CLI that maps your existing task app — TickTick, Obsidian, Notion, GitHub, Airtable, Beads or several at once — into a common task contract, retrieves relevant tasks and notes with provenance, and writes results back when the adapter supports it.
- Retrieval and CRUD over the active backend: find, get_task, create_task, set_task_intent, add_task_link, resolve_task_links
- Execution context and history: context_for_task, record_action, poll_task_events
- undo_write, for taking back something an agent wrote
- Adapters for TickTick, Obsidian, Taskmaster, Beads, Airtable, Google, Notion and GitHub — or several at once through the composite adapter
- Retrieval fused with RRF across keyword, native and optional dense branches, with result provenance retained
- A knowledge-graph layer for subject-predicate-object facts with provenance and temporal validity, exportable as JSON or Cypher
Npm install -g @reneza/ats-cli plus the adapter you want, for example @reneza/ats-adapter-ticktick. Select it with ats config use, then ats auth login. The MCP binary is ats-mcp and takes the adapter package name in ATS_ADAPTER; it speaks stdio, so any client that can launch one works.
One command — npm i -g @reneza/ats-cli
