Skip to main content
Five copy-pasteable scenarios that cover most everyday CLI workflows. Each runs in under 30 seconds against a populated tenant.

1. List your most recent notes

tiro notes list --limit 10
Pretty output in a TTY:
2026-04-02  note-a8f2c1...  18m32s  Q3 Planning
2026-04-01  note-b7e1d4...  12m05s  Customer call with Acme Corp
2026-03-29  note-c3f9a2...  45m11s  Engineering weekly standup

Add --json to switch to NDJSON for piping:
tiro notes list --limit 100 --json | jq -r '.guid' | head -5

2. Search by keyword and date range

tiro notes search "OKR" --since 30d --json
tiro notes search uses Tiro’s deep search — each result is a note hydrated with its primary documents (one-pager, custom). The keyword is required (positional or --keyword). Date filters accept ISO-8601 or relative shorthand:
tiro notes search "Q3 Planning" --since 2026-04-01 --until 2026-05-01
tiro notes search "Acme Corp"   --since 7d
tiro notes search "release"     --since 24h
Folder-scoped:
tiro notes search "deploy" --folder <folderId> --json

How keyword matching works

tiro notes search queries Tiro’s full-text search index over note titles and paragraph content. Matches are case-insensitive and tokenized — "OKR planning" returns notes containing both “OKR” and “planning”, not the literal phrase. Results are reordered by relevance with createdAt desc as tiebreaker. The deep variant (this command, POST /v1/external/notes/search) also hydrates each note with its primary documents (one-pager, custom) so an LLM client can read content alongside metadata in one call. The lighter tiro notes list --keyword "..." returns metadata only. Without --keyword, tiro notes list orders results by createdAt desc. With --keyword, pagination cursor is always null (the response is bounded by what the search index returns).
Placeholder filter. Both tiro notes list and tiro notes search filter out placeholder notes by default (title === "Untitled" or sourceType === "onboarding"). A page of N may return fewer than N visible notes — pass --include-untitled to surface them.

3. Save a single meeting note as Markdown

tiro notes get <noteGuid> --output ./q3-planning.md --include transcript
stdout returns one line of metadata — the actual content goes to disk:
{"ok":true,"data":{"saved":"./q3-planning.md","size":12450,"format":"md","guid":"note-a8f2c1...","title":"Q3 Planning"}}
The Markdown file contains a YAML frontmatter, the participant list, and a transcript with one elapsed-timestamp header per paragraph followed by speaker-attributed segments:
### 00:12

**Yeoul**: Let's start with the Acme deal pipeline.
**Evan**: They just signed the LOI.
Pass --no-timestamps (v0.3.0+) to drop the ### mm:ss headers entirely — handy for raw saving and LLM ingest where the timestamps are noise:
tiro notes transcript <noteGuid> --output ./clean.md --no-timestamps

4. Pipe search results to jq

tiro notes search "OKR" --since 7d --json \
  | jq -r 'select(.recordingDurationSeconds > 600) | .guid' \
  > long-okr-meetings.txt
--json always emits NDJSON for list/search responses — one note per line. Combine with jq -c (compact) for further pipelines, or head / tail to slice. If the response includes a next-page cursor, it’s emitted as a final NDJSON line keyed _cursor:
tiro notes list --limit 50 --json | tail -1
# → {"_cursor":"eyJjcmVhdGVkQXQi…"}
Pass that back as --cursor to continue:
tiro notes list --limit 50 --cursor "eyJjcmVhdGVkQXQi…"

5. Get a transcript with speaker labels

tiro notes transcript <noteGuid> --format md --output ./transcript.md
# Customer call with Acme Corp

**Participants**: Yeoul, Evan, Hailey

## Transcript

### 00:00

**Yeoul**: Thanks for joining — let me walk through the proposal.

### 00:12

**Hailey**: One quick question on pricing tiers.

### 00:25

**Evan**: That's covered on slide 4.

For agents that already understand MCP’s get_note_transcript payload, switch to --format json — the shape is byte-for-byte identical:
tiro notes transcript <noteGuid> --format json
{
  "noteGuid": "note-a8f2c1...",
  "title": "Customer call with Acme Corp",
  "participants": ["Yeoul", "Evan", "Hailey"],
  "createdAt": "2026-04-01T10:30:00Z",
  "recordingDurationSeconds": 3605,
  "paragraphs": [
    {
      "timeFrom": "2026-04-01T10:30:00Z",
      "timeTo":   "2026-04-01T10:30:12Z",
      "segments": [
        { "content": "Thanks for joining…",
          "speaker": { "label": "SPEAKER_0", "name": "Yeoul" } }
      ]
    },

  ]
}

5. Explore the workspace wiki

The wiki is Tiro’s auto-extracted knowledge graph (entities, concepts, and their links) over your notes. These commands are read-only and require a wiki-enabled workspace (paid, opt-in).
tiro wiki workspaces                                   # which workspaces? (guid + wiki on/off)
tiro wiki search "payment system" --workspace <guid>   # ranked pages; <query> is positional
tiro wiki page <pageGuid> --workspace <guid>           # body + mentions + aliases + links (all included)
tiro wiki mentions <pageGuid> --workspace <guid>       # where the page is grounded in your notes
tiro wiki graph <pageGuid> --mode around --workspace <guid>    # neighborhood graph (capped — see `truncated`)
tiro wiki graph --mode seed --type CONCEPT --workspace <guid>  # overview graph — no pageGuid needed
--workspace is optional — omit it to use the default workspace for your API key. If your account belongs to more than one workspace, run tiro wiki workspaces first and pass the guid whose wiki is on. A gated workspace prints the backend’s upgrade message and exits non-zero. → Continue to For AI agents for tool-selection guidance and worked agent flows.