Note-Driven Workflow¶
This tutorial shows how to use notio's MCP tools to create, search, and manage structured notes through an AI agent — the foundation for the worklog capture-to-task pipeline.
The workflow¶
The note-driven workflow follows this progression:
graph LR
A[Capture idea] -->|note_create| B[Structured note]
B -->|note_search| C[Find related notes]
B -->|note_update| D[Triage & tag]
D --> E[Promote to task]
E --> F[Agent execution]
This maps directly to worklog's object model: Note (captured thought) → Task (actionable work) → Run (agent execution).
Prerequisites¶
- A projio workspace with notio initialized (
notio init --write-config) - MCP server configured (
projio mcp-config -C . --yes) - Agent permissions configured (
projio add claude— see Agent Safety & Permissions) - At least one note type configured in
notio.toml
Step 1: Check available note types¶
Ask the agent what types are configured:
You: What note types are available?
The agent calls note_types():
{
"types": {
"idea": {"mode": "event", "template": "idea.md"},
"issue": {"mode": "event", "template": "issue.md"},
"task": {"mode": "event", "template": "task.md"},
"meeting": {"mode": "event", "template": "meeting.md"},
"daily": {"mode": "period", "template": "daily.md"},
"weekly": {"mode": "period", "template": "weekly.md"}
}
}
Note types have two modes:
- event — one note per occurrence (ideas, issues, tasks, meetings)
- period — one note per time window (daily logs, weekly summaries)
Step 2: Capture an idea¶
You: Create an idea note titled "Batch processing for corpus updates"
The agent calls note_create(note_type="idea", title="Batch processing for corpus updates"):
{
"path": "docs/log/idea/idea-arash-20260318-143022.md",
"type": "idea"
}
The created note has structured frontmatter:
---
title: Batch processing for corpus updates
date: 2026-03-18
owner: arash
type: idea
status: open
tags: []
---
Step 3: Create a task from an idea¶
When an idea is ready to become actionable:
You: Create a task note titled "Implement batch corpus update pipeline"
The agent calls note_create(note_type="task", title="Implement batch corpus update pipeline"):
{
"path": "docs/log/task/task-arash-20260318-143145.md",
"type": "task"
}
Step 4: Update note metadata¶
Triage notes by updating their frontmatter:
You: Update the task note at docs/log/task/task-arash-20260318-143145.md —
set status to "in_progress" and add tags ["indexio", "pipeline"].
The agent calls note_update(path="docs/log/task/task-arash-20260318-143145.md", fields='{"status": "in_progress", "tags": ["indexio", "pipeline"]}'):
{
"path": "docs/log/task/task-arash-20260318-143145.md",
"updated_fields": ["status", "tags"]
}
Under the hood: note_update
The fields parameter is a JSON string. The tool parses it and merges key-value pairs into the note's YAML frontmatter. Existing fields not mentioned are preserved.
Step 5: Search across notes¶
Find related notes using semantic search:
You: Search notes for "corpus indexing pipeline"
The agent calls note_search(query="corpus indexing pipeline", k=5):
{
"results": [
{"path": "docs/log/task/task-arash-20260318-143145.md", "score": 0.87, "title": "Implement batch corpus update pipeline"},
{"path": "docs/log/idea/idea-arash-20260318-143022.md", "score": 0.82, "title": "Batch processing for corpus updates"},
{"path": "docs/log/issue/issue-arash-20260315-091200.md", "score": 0.61, "title": "indexio sync fails on large corpora"}
]
}
Step 6: List and review notes¶
List recent notes by type:
You: Show me the latest task notes.
The agent calls note_list(note_type="task", limit=10) to get recent tasks, then note_read(path) on any that need review.
Agent triage pattern¶
A typical triage session combines multiple tools:
You: Review my open ideas and suggest which should become tasks.
The agent:
- Calls
note_list(note_type="idea")to get all ideas - Calls
note_read(path)on each to read content - Calls
note_searchto check for related existing tasks - Recommends which ideas to promote
- Calls
note_create(note_type="task", ...)for approved promotions - Calls
note_updateon the original ideas to setstatus: "promoted"
This is the pattern that worklog automates: captured ideas flow through triage into the task queue, where they can trigger agent runs.
Worklog integration¶
In the full pipeline, worklog orchestrates this flow:
- Capture — voice/text via Telegram → worklog transcribes
- Materialize — worklog calls
note_createto create a notio note - Triage — worklog (or agent) calls
note_search+note_updateto categorize - Promote — worklog promotes notes to tasks via
note_create(note_type="task") - Execute — tasks trigger scoped agent runs against project repos
The projio MCP tools provide the infrastructure; worklog provides the orchestration logic.
CLI equivalents¶
Everything the agent does via MCP can also be done from the command line:
notio note idea --title "Batch processing for corpus updates"
notio note task --title "Implement batch corpus update pipeline"
notio toc --all # rebuild index pages
The MCP tools add structured return values and searchability that CLI output lacks.
Next steps¶
- Semantic Search Pipeline — build a searchable corpus from your notes and documents
- Agent Orchestration — combine notes with bibliography, code intelligence, and search in a single agent session