ingestSource
Pulls only new or changed items from a connected source using its saved watermark, skips unchanged content, and returns a run report for incremental, idempotent ingestion.
Instructions
Ingest the delta from a previously connected source, resuming from its saved watermark (cheap incremental pull). Give a connector (local-git, claude-chats, or granola) and, for the file-based ones, repoPath (granola uses a stored API key instead); optionally scope (personal|team), dryRun, maxItems, and maxExtractionCalls. Idempotent: unchanged items are skipped by content hash. Returns a run report with a jobUid. Refuses project scope.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Scope to ingest into. Defaults to personal. Project scope is refused: ingested external content is sensitive and project is plaintext. | |
| dryRun | No | Preview only: validate the source and count would-be items WITHOUT writing anything (the consent gate). | |
| maxItems | No | Cap on items considered this run (backfill bound). Defaults to 500. | |
| repoPath | No | Source locator for file-based connectors: a local git repository path (local-git), or an export file path (claude-chats: a .zip bundle or a conversations.json). Omit for granola, which authenticates with a keychain API key (set it via 'maz source add granola'). | |
| connector | Yes | Source connector name. Supported: local-git, claude-chats, granola. | |
| maxExtractionCalls | No | Cap on episodes appended this run, each one downstream extraction. Defaults to 500. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | ||
| jobUid | No | Job UID; pass to listJobs / cancelJob to track or cancel a long backfill. | |
| streams | No | ||
| connector | Yes | ||
| itemsApplied | Yes | Items turned into episodes (or, in a dry run, that WOULD be). | |
| itemsSkipped | Yes | Items skipped because their content hash was unchanged (idempotent re-ingest). | |
| episodesAppended | Yes |