{
  "name": "agentgrep",
  "url": "https://agentgrep.org",
  "description": "Read-only search for local AI agent prompts and history across Codex, Claude Code, Cursor, and Gemini.",
  "sourceRepository": "https://github.com/tony/agentgrep/",
  "agentEntrypoints": {
    "manifest": "/docs.json",
    "llms": "/llms.txt",
    "llmsFull": "/llms-full.txt"
  },
  "pages": [
    {
      "title": "agentgrep find",
      "description": "The agentgrep find command enumerates the on-disk prompt and history stores agentgrep can read — Codex session files, Claude Code JSONL transcripts, Cursor SQLite databases, Gemini history. Use it ...",
      "section": "Documentation",
      "url": "/cli/find/",
      "markdownUrl": "/cli/find.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "agentgrep find"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        },
        {
          "id": "live-streaming",
          "level": 2,
          "text": "Live streaming"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "find-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "find-positional-arguments",
          "level": 3,
          "text": "Positional Arguments"
        },
        {
          "id": "find-options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "json-output",
          "level": 2,
          "text": "JSON output"
        },
        {
          "id": "ndjson-output",
          "level": 2,
          "text": "NDJSON output"
        },
        {
          "id": "filtering-by-agent",
          "level": 2,
          "text": "Filtering by agent"
        },
        {
          "id": "query-language",
          "level": 2,
          "text": "Query language"
        }
      ]
    },
    {
      "title": "agentgrep fuzzy",
      "description": "The agentgrep fuzzy command is a non-interactive fuzzy filter shaped like fzf --filter. It reads candidate lines from stdin, scores them against your query, and emits the matches in descending scor...",
      "section": "Documentation",
      "url": "/cli/fuzzy/",
      "markdownUrl": "/cli/fuzzy.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "agentgrep fuzzy"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        },
        {
          "id": "no-input-behavior",
          "level": 2,
          "text": "No-input behavior"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "fuzzy-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "fuzzy-positional-arguments",
          "level": 3,
          "text": "Positional Arguments"
        },
        {
          "id": "fuzzy-options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "exit-codes",
          "level": 2,
          "text": "Exit codes"
        },
        {
          "id": "extended-search-syntax",
          "level": 2,
          "text": "Extended-search syntax"
        },
        {
          "id": "field-selection",
          "level": 2,
          "text": "Field selection"
        },
        {
          "id": "nul-delimited-i-o",
          "level": 2,
          "text": "NUL-delimited I/O"
        },
        {
          "id": "interactive-ui",
          "level": 2,
          "text": "Interactive UI"
        }
      ]
    },
    {
      "title": "agentgrep grep",
      "description": "The agentgrep grep command searches normalized prompt and history records with the flag grammar and output behavior of ripgrep and the_silver_searcher. If you already reach for rg -i or ag -F witho...",
      "section": "Documentation",
      "url": "/cli/grep/",
      "markdownUrl": "/cli/grep.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "agentgrep grep"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        },
        {
          "id": "output-format",
          "level": 2,
          "text": "Output format"
        },
        {
          "id": "live-streaming",
          "level": 2,
          "text": "Live streaming"
        },
        {
          "id": "progress",
          "level": 2,
          "text": "Progress"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "grep-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "grep-positional-arguments",
          "level": 3,
          "text": "Positional Arguments"
        },
        {
          "id": "grep-options",
          "level": 3,
          "text": "Options"
        },
        {
          "id": "exit-codes",
          "level": 2,
          "text": "Exit codes"
        },
        {
          "id": "error-handling",
          "level": 2,
          "text": "Error handling"
        },
        {
          "id": "files-without-matches",
          "level": 2,
          "text": "Files without matches"
        },
        {
          "id": "session-deduplication",
          "level": 2,
          "text": "Session deduplication"
        },
        {
          "id": "json-output",
          "level": 2,
          "text": "JSON output"
        },
        {
          "id": "ndjson-output",
          "level": 2,
          "text": "NDJSON output"
        },
        {
          "id": "interactive-ui",
          "level": 2,
          "text": "Interactive UI"
        },
        {
          "id": "query-language",
          "level": 2,
          "text": "Query language"
        }
      ]
    },
    {
      "title": "CLI",
      "description": "The agentgrep CLI is the fastest path to your local AI agent prompt and history archives from a terminal. It wraps the same read-only discovery and parsing layer the MCP server exposes — grep, find...",
      "section": "Documentation",
      "url": "/cli/",
      "markdownUrl": "/cli/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "CLI"
        },
        {
          "id": "ui-overlay",
          "level": 2,
          "text": "–ui overlay"
        },
        {
          "id": "use-from-another-agent",
          "level": 2,
          "text": "Use from another agent"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        },
        {
          "id": "command-agentgrep",
          "level": 2,
          "text": "Command: agentgrep"
        },
        {
          "id": "usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "options",
          "level": 3,
          "text": "Options"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "CLI argument types, serialization helpers, and command entry points.",
      "section": "Documentation",
      "url": "/cli/reference/",
      "markdownUrl": "/cli/reference.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        },
        {
          "id": "argument-types",
          "level": 2,
          "text": "Argument types"
        },
        {
          "id": "agentgrep.FindArgs",
          "level": 3,
          "text": "FindArgs"
        },
        {
          "id": "agentgrep.FindArgs.pattern",
          "level": 4,
          "text": "pattern"
        },
        {
          "id": "agentgrep.FindArgs.agents",
          "level": 4,
          "text": "agents"
        },
        {
          "id": "agentgrep.FindArgs.limit",
          "level": 4,
          "text": "limit"
        },
        {
          "id": "agentgrep.FindArgs.output_mode",
          "level": 4,
          "text": "output_mode"
        },
        {
          "id": "agentgrep.FindArgs.color_mode",
          "level": 4,
          "text": "color_mode"
        },
        {
          "id": "agentgrep.FindArgs.pattern_mode",
          "level": 4,
          "text": "pattern_mode"
        },
        {
          "id": "agentgrep.FindArgs.type_filter",
          "level": 4,
          "text": "type_filter"
        },
        {
          "id": "agentgrep.FindArgs.extensions",
          "level": 4,
          "text": "extensions"
        },
        {
          "id": "agentgrep.FindArgs.case_mode",
          "level": 4,
          "text": "case_mode"
        },
        {
          "id": "agentgrep.FindArgs.list_details",
          "level": 4,
          "text": "list_details"
        },
        {
          "id": "agentgrep.FindArgs.print0",
          "level": 4,
          "text": "print0"
        },
        {
          "id": "agentgrep.FindArgs.absolute_path",
          "level": 4,
          "text": "absolute_path"
        },
        {
          "id": "agentgrep.FindArgs.full_path",
          "level": 4,
          "text": "full_path"
        },
        {
          "id": "agentgrep.FindArgs.progress_mode",
          "level": 4,
          "text": "progress_mode"
        },
        {
          "id": "agentgrep.FindArgs.compiled",
          "level": 4,
          "text": "compiled"
        },
        {
          "id": "agentgrep.FindArgs.raw_query",
          "level": 4,
          "text": "raw_query"
        },
        {
          "id": "agentgrep.FindArgs.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "serialization",
          "level": 2,
          "text": "Serialization"
        },
        {
          "id": "agentgrep.serialize_search_record",
          "level": 3,
          "text": "serialize_search_record()"
        },
        {
          "id": "agentgrep.serialize_find_record",
          "level": 3,
          "text": "serialize_find_record()"
        },
        {
          "id": "agentgrep.serialize_source_handle",
          "level": 3,
          "text": "serialize_source_handle()"
        },
        {
          "id": "agentgrep.build_envelope",
          "level": 3,
          "text": "build_envelope()"
        },
        {
          "id": "entry-points",
          "level": 2,
          "text": "Entry points"
        },
        {
          "id": "agentgrep.run_find_command",
          "level": 3,
          "text": "run_find_command()"
        },
        {
          "id": "agentgrep.run_ui_command",
          "level": 3,
          "text": "run_ui_command()"
        },
        {
          "id": "agentgrep.main",
          "level": 3,
          "text": "main()"
        }
      ]
    },
    {
      "title": "Benchmark harness",
      "description": "scripts/benchmark.py is a cross-commit benchmark runner that walks hyperfine across HEAD, trunk, a range, the last N commits, an explicit list of tags / SHAs, or just HEAD vs. trunk. It surfaces un...",
      "section": "Documentation",
      "url": "/dev/benchmark/",
      "markdownUrl": "/dev/benchmark.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Benchmark harness"
        },
        {
          "id": "invocation-recipes",
          "level": 2,
          "text": "Invocation recipes"
        },
        {
          "id": "discovery-subcommands",
          "level": 2,
          "text": "Discovery subcommands"
        },
        {
          "id": "output-formats",
          "level": 2,
          "text": "Output formats"
        },
        {
          "id": "config-layering",
          "level": 2,
          "text": "Config layering"
        },
        {
          "id": "templating",
          "level": 2,
          "text": "Templating"
        },
        {
          "id": "safety",
          "level": 2,
          "text": "Safety"
        },
        {
          "id": "when-to-skip-the-harness",
          "level": 2,
          "text": "When to skip the harness"
        }
      ]
    },
    {
      "title": "Development",
      "description": "Contributing and internals references — material for people poking at agentgrep’s source, writing new adapters, or running benchmarks across the commit history. None of this ships in the published ...",
      "section": "Documentation",
      "url": "/dev/",
      "markdownUrl": "/dev/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Development"
        }
      ]
    },
    {
      "title": "Storage catalogue",
      "description": "agentgrep keeps an explicit catalogue of every on-disk store it knows about, modelled as Pydantic StoreDescriptor rows aggregated under one StoreCatalog. The catalogue is descriptive: it documents ...",
      "section": "Documentation",
      "url": "/dev/storage-catalog/",
      "markdownUrl": "/dev/storage-catalog.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Storage catalogue"
        },
        {
          "id": "why-a-catalogue",
          "level": 2,
          "text": "Why a catalogue"
        },
        {
          "id": "reading-a-descriptor",
          "level": 2,
          "text": "Reading a descriptor"
        },
        {
          "id": "stores-by-agent",
          "level": 2,
          "text": "Stores by agent"
        },
        {
          "id": "claude-code",
          "level": 3,
          "text": "Claude Code"
        },
        {
          "id": "cursor",
          "level": 3,
          "text": "Cursor"
        },
        {
          "id": "codex",
          "level": 3,
          "text": "Codex"
        },
        {
          "id": "gemini-cli",
          "level": 3,
          "text": "Gemini CLI"
        },
        {
          "id": "adding-or-updating-a-store",
          "level": 2,
          "text": "Adding or updating a store"
        },
        {
          "id": "see-also",
          "level": 2,
          "text": "See also"
        }
      ]
    },
    {
      "title": "MCP Clients",
      "description": "agentgrep exposes a local stdio MCP server. Any MCP client that can launch a command can run it.",
      "section": "Documentation",
      "url": "/getting-started/clients/",
      "markdownUrl": "/getting-started/clients.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "MCP Clients"
        },
        {
          "id": "codex-cli",
          "level": 2,
          "text": "Codex CLI"
        },
        {
          "id": "claude-code",
          "level": 2,
          "text": "Claude Code"
        },
        {
          "id": "claude-desktop-and-cursor",
          "level": 2,
          "text": "Claude Desktop and Cursor"
        },
        {
          "id": "fastmcp",
          "level": 2,
          "text": "FastMCP"
        }
      ]
    },
    {
      "title": "Configuration",
      "description": "agentgrep is intentionally low-configuration. It reads known local agent stores under the current user’s home directory and never mutates them.",
      "section": "Documentation",
      "url": "/getting-started/configuration/",
      "markdownUrl": "/getting-started/configuration.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Configuration"
        },
        {
          "id": "agent-selection",
          "level": 2,
          "text": "Agent selection"
        },
        {
          "id": "search-type",
          "level": 2,
          "text": "Search type"
        },
        {
          "id": "output",
          "level": 2,
          "text": "Output"
        },
        {
          "id": "progress-and-early-answers",
          "level": 2,
          "text": "Progress and early answers"
        },
        {
          "id": "privacy",
          "level": 2,
          "text": "Privacy"
        },
        {
          "id": "mcp-capabilities",
          "level": 2,
          "text": "MCP capabilities"
        }
      ]
    },
    {
      "title": "Getting Started",
      "description": "One path from a checkout to a useful search result.",
      "section": "Documentation",
      "url": "/getting-started/",
      "markdownUrl": "/getting-started/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Getting Started"
        },
        {
          "id": "install-dependencies",
          "level": 2,
          "text": "1. Install dependencies"
        },
        {
          "id": "search-local-agent-history",
          "level": 2,
          "text": "2. Search local agent history"
        },
        {
          "id": "inspect-the-stores",
          "level": 2,
          "text": "3. Inspect the stores"
        },
        {
          "id": "use-mcp",
          "level": 2,
          "text": "4. Use MCP"
        },
        {
          "id": "next-steps",
          "level": 2,
          "text": "Next steps"
        }
      ]
    },
    {
      "title": "Installation",
      "description": "Python 3.14",
      "section": "Documentation",
      "url": "/getting-started/installation/",
      "markdownUrl": "/getting-started/installation.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Installation"
        },
        {
          "id": "requirements",
          "level": 2,
          "text": "Requirements"
        },
        {
          "id": "development-install",
          "level": 2,
          "text": "Development install"
        },
        {
          "id": "package-install",
          "level": 2,
          "text": "Package install"
        },
        {
          "id": "optional-tools",
          "level": 2,
          "text": "Optional tools"
        }
      ]
    },
    {
      "title": "Changelog",
      "description": "To install the unreleased agentgrep version:",
      "section": "Documentation",
      "url": "/history/",
      "markdownUrl": "/history.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Changelog"
        },
        {
          "id": "agentgrep-0-1-0a7-2026-05-25",
          "level": 2,
          "text": "agentgrep 0.1.0a7 (2026-05-25)"
        },
        {
          "id": "what-s-new",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "search-relevance-ranked-results-with-session-grouping-20",
          "level": 4,
          "text": "search: Relevance-ranked results with session grouping (#20)"
        },
        {
          "id": "new-flag-style-pretty-for-grep-18",
          "level": 4,
          "text": "New flag: --style=pretty for grep (#18)"
        },
        {
          "id": "agentgrep-0-1-0a5-2026-05-23",
          "level": 2,
          "text": "agentgrep 0.1.0a5 (2026-05-23)"
        },
        {
          "id": "breaking-changes",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "bare-agentgrep-terms-no-longer-auto-runs-search",
          "level": 4,
          "text": "Bare agentgrep <terms> no longer auto-runs search"
        },
        {
          "id": "find-pattern-is-regex-by-default",
          "level": 4,
          "text": "find <PATTERN> is regex by default"
        },
        {
          "id": "id2",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "new-subcommand-grep",
          "level": 4,
          "text": "New subcommand: grep"
        },
        {
          "id": "new-subcommand-fuzzy",
          "level": 4,
          "text": "New subcommand: fuzzy"
        },
        {
          "id": "fd-shaped-find-flags",
          "level": 4,
          "text": "fd-shaped find flags"
        },
        {
          "id": "query-language-across-search-grep-find",
          "level": 4,
          "text": "Query language across search / grep / find"
        },
        {
          "id": "ui-overlay-on-every-subcommand",
          "level": 4,
          "text": "--ui overlay on every subcommand"
        },
        {
          "id": "no-progress-everywhere",
          "level": 4,
          "text": "--no-progress everywhere"
        },
        {
          "id": "headless-event-stream-engine",
          "level": 4,
          "text": "Headless event-stream engine"
        },
        {
          "id": "documentation",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "development",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "scripts-benchmark-py-9",
          "level": 4,
          "text": "scripts/benchmark.py (#9)"
        },
        {
          "id": "agentgrep-0-1-0a4-2026-05-21",
          "level": 2,
          "text": "agentgrep 0.1.0a4 (2026-05-21)"
        },
        {
          "id": "id3",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "cli-reference-site",
          "level": 4,
          "text": "CLI reference site"
        },
        {
          "id": "cli-install-widget",
          "level": 4,
          "text": "CLI install widget"
        },
        {
          "id": "cli-cooldowns",
          "level": 4,
          "text": "CLI cooldowns"
        },
        {
          "id": "default-to-the-textual-explorer-7",
          "level": 4,
          "text": "Default to the Textual explorer (#7)"
        },
        {
          "id": "live-cancellable-search-and-sticky-in-list-filter-7",
          "level": 4,
          "text": "Live, cancellable search and sticky in-list filter (#7)"
        },
        {
          "id": "per-pane-chrome-with-scroll-indicators-and-tig-style-timestamps-7",
          "level": 4,
          "text": "Per-pane chrome with scroll indicators and tig-style timestamps (#7)"
        },
        {
          "id": "filter-and-detail-responsiveness-on-large-result-sets-7",
          "level": 4,
          "text": "Filter and detail responsiveness on large result sets (#7)"
        },
        {
          "id": "fixes",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "mcp-install-widget-ships-working-cooldown-snippets",
          "level": 4,
          "text": "MCP install widget ships working cooldown snippets"
        },
        {
          "id": "id4",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "agentgrep-ui-subpackage-7",
          "level": 4,
          "text": "agentgrep.ui subpackage (#7)"
        },
        {
          "id": "agentgrep-0-1-0a3-2026-05-17",
          "level": 2,
          "text": "agentgrep 0.1.0a3 (2026-05-17)"
        },
        {
          "id": "id5",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "eight-new-mcp-tools",
          "level": 4,
          "text": "Eight new MCP tools"
        },
        {
          "id": "three-new-mcp-resources",
          "level": 4,
          "text": "Three new MCP resources"
        },
        {
          "id": "mcp-server-hardening",
          "level": 4,
          "text": "MCP server hardening"
        },
        {
          "id": "mcp-install-widget",
          "level": 4,
          "text": "MCP install widget"
        },
        {
          "id": "library-install-quickstart-widget",
          "level": 4,
          "text": "Library install + quickstart widget"
        },
        {
          "id": "sidebar-library-and-mcp-first-class",
          "level": 4,
          "text": "Sidebar: Library and MCP first-class"
        },
        {
          "id": "id6",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "scripts-mcp-swap-py",
          "level": 4,
          "text": "scripts/mcp_swap.py"
        },
        {
          "id": "mcp-server-refactor",
          "level": 4,
          "text": "MCP server refactor"
        },
        {
          "id": "top-level-readme",
          "level": 4,
          "text": "Top-level README"
        },
        {
          "id": "agentgrep-0-1-0a2-2026-05-17",
          "level": 2,
          "text": "agentgrep 0.1.0a2 (2026-05-17)"
        },
        {
          "id": "id7",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "gemini-cli-search-support-4",
          "level": 4,
          "text": "Gemini CLI search support (#4)"
        },
        {
          "id": "cursor-cli-agent-search-support-4",
          "level": 4,
          "text": "Cursor CLI agent search support (#4)"
        },
        {
          "id": "storage-catalogue-4",
          "level": 4,
          "text": "Storage catalogue (#4)"
        },
        {
          "id": "id8",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "search-beneath-dotfile-gitignore-4",
          "level": 4,
          "text": "Search beneath dotfile .gitignore (#4)"
        },
        {
          "id": "id9",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "new-storage-catalog-reference-page-4",
          "level": 4,
          "text": "New storage-catalog reference page (#4)"
        },
        {
          "id": "agentgrep-0-1-0a1-2026-05-17",
          "level": 2,
          "text": "agentgrep 0.1.0a1 (2026-05-17)"
        },
        {
          "id": "id10",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "live-streaming-ui-mode-2",
          "level": 4,
          "text": "Live-streaming --ui mode (#2)"
        },
        {
          "id": "id11",
          "level": 3,
          "text": "Development"
        }
      ]
    },
    {
      "title": "agentgrep",
      "description": "Read-only search for local AI agent prompts and history across Codex, Claude Code, Cursor, and Gemini.",
      "section": "",
      "url": "/",
      "markdownUrl": "/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "agentgrep"
        },
        {
          "id": "what-you-can-do",
          "level": 2,
          "text": "What you can do"
        },
        {
          "id": "prompt-search",
          "level": 3,
          "text": "Prompt Search"
        },
        {
          "id": "discovery",
          "level": 3,
          "text": "Discovery"
        },
        {
          "id": "mcp-guidance",
          "level": 3,
          "text": "MCP guidance"
        }
      ]
    },
    {
      "title": "Event-stream engine",
      "description": "agentgrep’s search and find engines produce typed event streams — sync generators that yield pydantic discriminated-union events as they walk the user’s stores. The same producer feeds the CLI’s li...",
      "section": "Documentation",
      "url": "/library/event-stream/",
      "markdownUrl": "/library/event-stream.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Event-stream engine"
        },
        {
          "id": "why-a-stream",
          "level": 2,
          "text": "Why a stream"
        },
        {
          "id": "architecture",
          "level": 2,
          "text": "Architecture"
        },
        {
          "id": "sync-producer",
          "level": 3,
          "text": "Sync producer"
        },
        {
          "id": "pydantic-events",
          "level": 3,
          "text": "Pydantic events"
        },
        {
          "id": "search-events",
          "level": 2,
          "text": "Search events"
        },
        {
          "id": "find-events",
          "level": 2,
          "text": "Find events"
        },
        {
          "id": "consumer-recipes",
          "level": 2,
          "text": "Consumer recipes"
        },
        {
          "id": "print-records-as-they-arrive-the-cli-pattern",
          "level": 3,
          "text": "Print records as they arrive (the CLI pattern)"
        },
        {
          "id": "collect-to-a-list-the-mcp-tui-snapshot-pattern",
          "level": 3,
          "text": "Collect to a list (the MCP / TUI snapshot pattern)"
        },
        {
          "id": "update-a-ui-as-events-arrive-the-textual-tui-pattern",
          "level": 3,
          "text": "Update a UI as events arrive (the Textual TUI pattern)"
        },
        {
          "id": "cancel-mid-scan",
          "level": 3,
          "text": "Cancel mid-scan"
        },
        {
          "id": "slice-boundaries",
          "level": 2,
          "text": "Slice boundaries"
        },
        {
          "id": "reference",
          "level": 2,
          "text": "Reference"
        }
      ]
    },
    {
      "title": "Examples",
      "description": "",
      "section": "Documentation",
      "url": "/library/examples/",
      "markdownUrl": "/library/examples.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Examples"
        },
        {
          "id": "cli-search",
          "level": 2,
          "text": "CLI search"
        },
        {
          "id": "cli-discovery",
          "level": 2,
          "text": "CLI discovery"
        },
        {
          "id": "mcp-search-call",
          "level": 2,
          "text": "MCP search call"
        },
        {
          "id": "mcp-discovery-call",
          "level": 2,
          "text": "MCP discovery call"
        },
        {
          "id": "mcp-resource-reads",
          "level": 2,
          "text": "MCP resource reads"
        }
      ]
    },
    {
      "title": "How to",
      "description": "Filter discovery to Codex session files:",
      "section": "Documentation",
      "url": "/library/how-to/",
      "markdownUrl": "/library/how-to.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "How to"
        },
        {
          "id": "find-stores-before-searching",
          "level": 2,
          "text": "Find stores before searching"
        },
        {
          "id": "cap-result-count",
          "level": 2,
          "text": "Cap result count"
        },
        {
          "id": "answer-before-the-scan-finishes",
          "level": 2,
          "text": "Answer before the scan finishes"
        },
        {
          "id": "keep-scripts-quiet",
          "level": 2,
          "text": "Keep scripts quiet"
        },
        {
          "id": "use-mcp-from-a-client",
          "level": 2,
          "text": "Use MCP from a client"
        }
      ]
    },
    {
      "title": "Library",
      "description": "Use agentgrep as a Python library from your own scripts and tools. The same search, discovery, parsing, serialization, and path-privacy layer powers the terminal CLI and the MCP server, so anything...",
      "section": "Documentation",
      "url": "/library/",
      "markdownUrl": "/library/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Library"
        },
        {
          "id": "install",
          "level": 2,
          "text": "Install"
        }
      ]
    },
    {
      "title": "Query language",
      "description": "agentgrep grep, agentgrep grep, and agentgrep find accept a Lucene-style query language for inline field predicates, boolean composition, and date ranges. The same syntax works across all three sub...",
      "section": "Documentation",
      "url": "/library/query-language/",
      "markdownUrl": "/library/query-language.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Query language"
        },
        {
          "id": "grammar",
          "level": 2,
          "text": "Grammar"
        },
        {
          "id": "field-registry",
          "level": 2,
          "text": "Field registry"
        },
        {
          "id": "source-level-fields",
          "level": 3,
          "text": "Source-level fields"
        },
        {
          "id": "record-level-fields",
          "level": 3,
          "text": "Record-level fields"
        },
        {
          "id": "date-literals",
          "level": 2,
          "text": "Date literals"
        },
        {
          "id": "two-layer-filtering",
          "level": 2,
          "text": "Two-layer filtering"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        },
        {
          "id": "flag-field-collisions",
          "level": 2,
          "text": "Flag / field collisions"
        },
        {
          "id": "performance",
          "level": 2,
          "text": "Performance"
        },
        {
          "id": "known-limitations",
          "level": 2,
          "text": "Known limitations"
        },
        {
          "id": "leading-on-a-field-predicate",
          "level": 3,
          "text": "Leading - on a field predicate"
        },
        {
          "id": "field-with-no-inline-value",
          "level": 3,
          "text": "field: with no inline value"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "Core data types, discovery functions, and the search pipeline used by every surface (CLI, TUI, MCP).",
      "section": "Documentation",
      "url": "/library/reference/",
      "markdownUrl": "/library/reference.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        },
        {
          "id": "core-data",
          "level": 2,
          "text": "Core data"
        },
        {
          "id": "agentgrep.PrivatePath",
          "level": 3,
          "text": "PrivatePath"
        },
        {
          "id": "agentgrep.PrivatePath.__new__",
          "level": 4,
          "text": "__new__()"
        },
        {
          "id": "agentgrep.PrivatePath._collapse_home",
          "level": 4,
          "text": "_collapse_home()"
        },
        {
          "id": "agentgrep.format_display_path",
          "level": 3,
          "text": "format_display_path()"
        },
        {
          "id": "agentgrep.BackendSelection",
          "level": 3,
          "text": "BackendSelection"
        },
        {
          "id": "agentgrep.BackendSelection.find_tool",
          "level": 4,
          "text": "find_tool"
        },
        {
          "id": "agentgrep.BackendSelection.grep_tool",
          "level": 4,
          "text": "grep_tool"
        },
        {
          "id": "agentgrep.BackendSelection.json_tool",
          "level": 4,
          "text": "json_tool"
        },
        {
          "id": "agentgrep.BackendSelection.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "agentgrep.SearchQuery",
          "level": 3,
          "text": "SearchQuery"
        },
        {
          "id": "agentgrep.SearchQuery.terms",
          "level": 4,
          "text": "terms"
        },
        {
          "id": "agentgrep.SearchQuery.search_type",
          "level": 4,
          "text": "search_type"
        },
        {
          "id": "agentgrep.SearchQuery.any_term",
          "level": 4,
          "text": "any_term"
        },
        {
          "id": "agentgrep.SearchQuery.regex",
          "level": 4,
          "text": "regex"
        },
        {
          "id": "agentgrep.SearchQuery.case_sensitive",
          "level": 4,
          "text": "case_sensitive"
        },
        {
          "id": "agentgrep.SearchQuery.agents",
          "level": 4,
          "text": "agents"
        },
        {
          "id": "agentgrep.SearchQuery.limit",
          "level": 4,
          "text": "limit"
        },
        {
          "id": "agentgrep.SearchQuery.dedupe",
          "level": 4,
          "text": "dedupe"
        },
        {
          "id": "agentgrep.SearchQuery.compiled",
          "level": 4,
          "text": "compiled"
        },
        {
          "id": "agentgrep.SearchQuery.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "agentgrep.SourceHandle",
          "level": 3,
          "text": "SourceHandle"
        },
        {
          "id": "agentgrep.SourceHandle.agent",
          "level": 4,
          "text": "agent"
        },
        {
          "id": "agentgrep.SourceHandle.store",
          "level": 4,
          "text": "store"
        },
        {
          "id": "agentgrep.SourceHandle.adapter_id",
          "level": 4,
          "text": "adapter_id"
        },
        {
          "id": "agentgrep.SourceHandle.path",
          "level": 4,
          "text": "path"
        },
        {
          "id": "agentgrep.SourceHandle.path_kind",
          "level": 4,
          "text": "path_kind"
        },
        {
          "id": "agentgrep.SourceHandle.source_kind",
          "level": 4,
          "text": "source_kind"
        },
        {
          "id": "agentgrep.SourceHandle.search_root",
          "level": 4,
          "text": "search_root"
        },
        {
          "id": "agentgrep.SourceHandle.mtime_ns",
          "level": 4,
          "text": "mtime_ns"
        },
        {
          "id": "agentgrep.SourceHandle.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "agentgrep.SearchRecord",
          "level": 3,
          "text": "SearchRecord"
        },
        {
          "id": "agentgrep.SearchRecord.kind",
          "level": 4,
          "text": "kind"
        },
        {
          "id": "agentgrep.SearchRecord.agent",
          "level": 4,
          "text": "agent"
        },
        {
          "id": "agentgrep.SearchRecord.store",
          "level": 4,
          "text": "store"
        },
        {
          "id": "agentgrep.SearchRecord.adapter_id",
          "level": 4,
          "text": "adapter_id"
        },
        {
          "id": "agentgrep.SearchRecord.path",
          "level": 4,
          "text": "path"
        },
        {
          "id": "agentgrep.SearchRecord.text",
          "level": 4,
          "text": "text"
        },
        {
          "id": "agentgrep.SearchRecord.title",
          "level": 4,
          "text": "title"
        },
        {
          "id": "agentgrep.SearchRecord.role",
          "level": 4,
          "text": "role"
        },
        {
          "id": "agentgrep.SearchRecord.timestamp",
          "level": 4,
          "text": "timestamp"
        },
        {
          "id": "agentgrep.SearchRecord.model",
          "level": 4,
          "text": "model"
        },
        {
          "id": "agentgrep.SearchRecord.session_id",
          "level": 4,
          "text": "session_id"
        },
        {
          "id": "agentgrep.SearchRecord.conversation_id",
          "level": 4,
          "text": "conversation_id"
        },
        {
          "id": "agentgrep.SearchRecord.metadata",
          "level": 4,
          "text": "metadata"
        },
        {
          "id": "agentgrep.SearchRecord.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "agentgrep.FindRecord",
          "level": 3,
          "text": "FindRecord"
        },
        {
          "id": "agentgrep.FindRecord.kind",
          "level": 4,
          "text": "kind"
        },
        {
          "id": "agentgrep.FindRecord.agent",
          "level": 4,
          "text": "agent"
        },
        {
          "id": "agentgrep.FindRecord.store",
          "level": 4,
          "text": "store"
        },
        {
          "id": "agentgrep.FindRecord.adapter_id",
          "level": 4,
          "text": "adapter_id"
        },
        {
          "id": "agentgrep.FindRecord.path",
          "level": 4,
          "text": "path"
        },
        {
          "id": "agentgrep.FindRecord.path_kind",
          "level": 4,
          "text": "path_kind"
        },
        {
          "id": "agentgrep.FindRecord.metadata",
          "level": 4,
          "text": "metadata"
        },
        {
          "id": "agentgrep.FindRecord.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "search-control-and-progress",
          "level": 2,
          "text": "Search control and progress"
        },
        {
          "id": "agentgrep.SearchControl",
          "level": 3,
          "text": "SearchControl"
        },
        {
          "id": "agentgrep.SearchControl.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "agentgrep.SearchControl.request_answer_now",
          "level": 4,
          "text": "request_answer_now()"
        },
        {
          "id": "agentgrep.SearchControl.answer_now_requested",
          "level": 4,
          "text": "answer_now_requested()"
        },
        {
          "id": "agentgrep.SearchProgress",
          "level": 3,
          "text": "SearchProgress"
        },
        {
          "id": "agentgrep.SearchProgress.start",
          "level": 4,
          "text": "start()"
        },
        {
          "id": "agentgrep.SearchProgress.sources_discovered",
          "level": 4,
          "text": "sources_discovered()"
        },
        {
          "id": "agentgrep.SearchProgress.prefilter_started",
          "level": 4,
          "text": "prefilter_started()"
        },
        {
          "id": "agentgrep.SearchProgress.sources_planned",
          "level": 4,
          "text": "sources_planned()"
        },
        {
          "id": "agentgrep.SearchProgress.source_started",
          "level": 4,
          "text": "source_started()"
        },
        {
          "id": "agentgrep.SearchProgress.source_finished",
          "level": 4,
          "text": "source_finished()"
        },
        {
          "id": "agentgrep.SearchProgress.result_added",
          "level": 4,
          "text": "result_added()"
        },
        {
          "id": "agentgrep.SearchProgress.record_added",
          "level": 4,
          "text": "record_added()"
        },
        {
          "id": "agentgrep.SearchProgress.finish",
          "level": 4,
          "text": "finish()"
        },
        {
          "id": "agentgrep.SearchProgress.answer_now",
          "level": 4,
          "text": "answer_now()"
        },
        {
          "id": "agentgrep.SearchProgress.interrupt",
          "level": 4,
          "text": "interrupt()"
        },
        {
          "id": "agentgrep.SearchProgress.close",
          "level": 4,
          "text": "close()"
        },
        {
          "id": "agentgrep.SearchProgress.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "agentgrep.SearchProgress._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.SearchProgress._is_protocol",
          "level": 4,
          "text": "_is_protocol"
        },
        {
          "id": "agentgrep.NoopSearchProgress",
          "level": 3,
          "text": "NoopSearchProgress"
        },
        {
          "id": "agentgrep.NoopSearchProgress.start",
          "level": 4,
          "text": "start()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.sources_discovered",
          "level": 4,
          "text": "sources_discovered()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.prefilter_started",
          "level": 4,
          "text": "prefilter_started()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.sources_planned",
          "level": 4,
          "text": "sources_planned()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.source_started",
          "level": 4,
          "text": "source_started()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.source_finished",
          "level": 4,
          "text": "source_finished()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.result_added",
          "level": 4,
          "text": "result_added()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.record_added",
          "level": 4,
          "text": "record_added()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.finish",
          "level": 4,
          "text": "finish()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.answer_now",
          "level": 4,
          "text": "answer_now()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.interrupt",
          "level": 4,
          "text": "interrupt()"
        },
        {
          "id": "agentgrep.NoopSearchProgress.close",
          "level": 4,
          "text": "close()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress",
          "level": 3,
          "text": "ConsoleSearchProgress"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._SPINNER_FRAMES",
          "level": 4,
          "text": "_SPINNER_FRAMES"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.start",
          "level": 4,
          "text": "start()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.sources_discovered",
          "level": 4,
          "text": "sources_discovered()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.prefilter_started",
          "level": 4,
          "text": "prefilter_started()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.sources_planned",
          "level": 4,
          "text": "sources_planned()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.source_started",
          "level": 4,
          "text": "source_started()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.source_finished",
          "level": 4,
          "text": "source_finished()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.source_progress",
          "level": 4,
          "text": "source_progress()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.result_added",
          "level": 4,
          "text": "result_added()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.record_added",
          "level": 4,
          "text": "record_added()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.set_status",
          "level": 4,
          "text": "set_status()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.finish",
          "level": 4,
          "text": "finish()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.answer_now",
          "level": 4,
          "text": "answer_now()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.close",
          "level": 4,
          "text": "close()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress.interrupt",
          "level": 4,
          "text": "interrupt()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._ensure_tty_thread",
          "level": 4,
          "text": "_ensure_tty_thread()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._stop_tty_thread",
          "level": 4,
          "text": "_stop_tty_thread()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._tty_loop",
          "level": 4,
          "text": "_tty_loop()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._render_tty",
          "level": 4,
          "text": "_render_tty()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._clear_tty_line",
          "level": 4,
          "text": "_clear_tty_line()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._write_tty_summary_line",
          "level": 4,
          "text": "_write_tty_summary_line()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._write_tty_line",
          "level": 4,
          "text": "_write_tty_line()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._emit_heartbeat_if_due",
          "level": 4,
          "text": "_emit_heartbeat_if_due()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._emit_line",
          "level": 4,
          "text": "_emit_line()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._summary",
          "level": 4,
          "text": "_summary()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._terminal_width",
          "level": 4,
          "text": "_terminal_width()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._snapshot",
          "level": 4,
          "text": "_snapshot()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._start_line",
          "level": 4,
          "text": "_start_line()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._heartbeat_line",
          "level": 4,
          "text": "_heartbeat_line()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._finish_line",
          "level": 4,
          "text": "_finish_line()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._answer_now_line",
          "level": 4,
          "text": "_answer_now_line()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._status_text",
          "level": 4,
          "text": "_status_text()"
        },
        {
          "id": "agentgrep.ConsoleSearchProgress._elapsed_seconds",
          "level": 4,
          "text": "_elapsed_seconds()"
        },
        {
          "id": "discovery-and-search",
          "level": 2,
          "text": "Discovery and search"
        },
        {
          "id": "agentgrep.select_backends",
          "level": 3,
          "text": "select_backends()"
        },
        {
          "id": "agentgrep.discover_sources",
          "level": 3,
          "text": "discover_sources()"
        },
        {
          "id": "agentgrep.run_search_query",
          "level": 3,
          "text": "run_search_query()"
        },
        {
          "id": "agentgrep.search_sources",
          "level": 3,
          "text": "search_sources()"
        },
        {
          "id": "agentgrep.run_find_query",
          "level": 3,
          "text": "run_find_query()"
        },
        {
          "id": "agentgrep.find_sources",
          "level": 3,
          "text": "find_sources()"
        }
      ]
    },
    {
      "title": "Tutorial",
      "description": "Search user prompts across all supported stores:",
      "section": "Documentation",
      "url": "/library/tutorial/",
      "markdownUrl": "/library/tutorial.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Tutorial"
        },
        {
          "id": "search-prompts",
          "level": 2,
          "text": "Search prompts"
        },
        {
          "id": "search-history",
          "level": 2,
          "text": "Search history"
        },
        {
          "id": "combine-terms",
          "level": 2,
          "text": "Combine terms"
        },
        {
          "id": "return-structured-output",
          "level": 2,
          "text": "Return structured output"
        }
      ]
    },
    {
      "title": "MCP",
      "description": "agentgrep’s MCP server exposes a read-only search surface over stdio. It does not mutate local agent stores, open SQLite in write mode, or execute arbitrary shell commands.",
      "section": "Documentation",
      "url": "/mcp/",
      "markdownUrl": "/mcp/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "MCP"
        },
        {
          "id": "install",
          "level": 2,
          "text": "Install"
        },
        {
          "id": "search-tool",
          "level": 2,
          "text": "Search Tool"
        },
        {
          "id": "discovery",
          "level": 2,
          "text": "Discovery"
        }
      ]
    },
    {
      "title": "Prompts",
      "description": "MCP prompts are reusable recipes a client can render before calling tools.",
      "section": "Documentation",
      "url": "/mcp/prompts/",
      "markdownUrl": "/mcp/prompts.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Prompts"
        },
        {
          "id": "search-prompts",
          "level": 2,
          "text": "Search prompts"
        },
        {
          "id": "fastmcp-prompt-search-prompts",
          "level": 3,
          "text": "search_prompts"
        },
        {
          "id": "search-history",
          "level": 2,
          "text": "Search history"
        },
        {
          "id": "fastmcp-prompt-search-history",
          "level": 3,
          "text": "search_history"
        },
        {
          "id": "inspect-stores",
          "level": 2,
          "text": "Inspect stores"
        },
        {
          "id": "fastmcp-prompt-inspect-stores",
          "level": 3,
          "text": "inspect_stores"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "FastMCP server factory, payload models, and MCP helpers.",
      "section": "Documentation",
      "url": "/mcp/reference/",
      "markdownUrl": "/mcp/reference.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        },
        {
          "id": "payload-models",
          "level": 2,
          "text": "Payload models"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel",
          "level": 3,
          "text": "SearchRecordModel"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.schema_version",
          "level": 4,
          "text": "schema_version"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.kind",
          "level": 4,
          "text": "kind"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.agent",
          "level": 4,
          "text": "agent"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.store",
          "level": 4,
          "text": "store"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.adapter_id",
          "level": 4,
          "text": "adapter_id"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.path",
          "level": 4,
          "text": "path"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.text",
          "level": 4,
          "text": "text"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.title",
          "level": 4,
          "text": "title"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.role",
          "level": 4,
          "text": "role"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.timestamp",
          "level": 4,
          "text": "timestamp"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.model",
          "level": 4,
          "text": "model"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.session_id",
          "level": 4,
          "text": "session_id"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.conversation_id",
          "level": 4,
          "text": "conversation_id"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.metadata",
          "level": 4,
          "text": "metadata"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.from_record",
          "level": 4,
          "text": "from_record()"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.mcp.SearchRecordModel.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel",
          "level": 3,
          "text": "FindRecordModel"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.schema_version",
          "level": 4,
          "text": "schema_version"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.kind",
          "level": 4,
          "text": "kind"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.agent",
          "level": 4,
          "text": "agent"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.store",
          "level": 4,
          "text": "store"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.adapter_id",
          "level": 4,
          "text": "adapter_id"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.path",
          "level": 4,
          "text": "path"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.path_kind",
          "level": 4,
          "text": "path_kind"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.metadata",
          "level": 4,
          "text": "metadata"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.from_record",
          "level": 4,
          "text": "from_record()"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.mcp.FindRecordModel.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel",
          "level": 3,
          "text": "SourceRecordModel"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.schema_version",
          "level": 4,
          "text": "schema_version"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.agent",
          "level": 4,
          "text": "agent"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.store",
          "level": 4,
          "text": "store"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.adapter_id",
          "level": 4,
          "text": "adapter_id"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.path",
          "level": 4,
          "text": "path"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.path_kind",
          "level": 4,
          "text": "path_kind"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.source_kind",
          "level": 4,
          "text": "source_kind"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.search_root",
          "level": 4,
          "text": "search_root"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.mtime_ns",
          "level": 4,
          "text": "mtime_ns"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.from_source",
          "level": 4,
          "text": "from_source()"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.mcp.SourceRecordModel.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery",
          "level": 3,
          "text": "SearchToolQuery"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery.terms",
          "level": 4,
          "text": "terms"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery.agent",
          "level": 4,
          "text": "agent"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery.search_type",
          "level": 4,
          "text": "search_type"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery.any_term",
          "level": 4,
          "text": "any_term"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery.regex",
          "level": 4,
          "text": "regex"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery.case_sensitive",
          "level": 4,
          "text": "case_sensitive"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery.limit",
          "level": 4,
          "text": "limit"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.mcp.SearchToolQuery.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "agentgrep.mcp.SearchToolResponse",
          "level": 3,
          "text": "SearchToolResponse"
        },
        {
          "id": "agentgrep.mcp.SearchToolResponse.schema_version",
          "level": 4,
          "text": "schema_version"
        },
        {
          "id": "agentgrep.mcp.SearchToolResponse.query",
          "level": 4,
          "text": "query"
        },
        {
          "id": "agentgrep.mcp.SearchToolResponse.results",
          "level": 4,
          "text": "results"
        },
        {
          "id": "agentgrep.mcp.SearchToolResponse._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.mcp.SearchToolResponse.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "agentgrep.mcp.FindToolQuery",
          "level": 3,
          "text": "FindToolQuery"
        },
        {
          "id": "agentgrep.mcp.FindToolQuery.pattern",
          "level": 4,
          "text": "pattern"
        },
        {
          "id": "agentgrep.mcp.FindToolQuery.agent",
          "level": 4,
          "text": "agent"
        },
        {
          "id": "agentgrep.mcp.FindToolQuery.limit",
          "level": 4,
          "text": "limit"
        },
        {
          "id": "agentgrep.mcp.FindToolQuery._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.mcp.FindToolQuery.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "agentgrep.mcp.FindToolResponse",
          "level": 3,
          "text": "FindToolResponse"
        },
        {
          "id": "agentgrep.mcp.FindToolResponse.schema_version",
          "level": 4,
          "text": "schema_version"
        },
        {
          "id": "agentgrep.mcp.FindToolResponse.query",
          "level": 4,
          "text": "query"
        },
        {
          "id": "agentgrep.mcp.FindToolResponse.results",
          "level": 4,
          "text": "results"
        },
        {
          "id": "agentgrep.mcp.FindToolResponse._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.mcp.FindToolResponse.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "agentgrep.mcp.BackendAvailabilityModel",
          "level": 3,
          "text": "BackendAvailabilityModel"
        },
        {
          "id": "agentgrep.mcp.BackendAvailabilityModel.find_tool",
          "level": 4,
          "text": "find_tool"
        },
        {
          "id": "agentgrep.mcp.BackendAvailabilityModel.grep_tool",
          "level": 4,
          "text": "grep_tool"
        },
        {
          "id": "agentgrep.mcp.BackendAvailabilityModel.json_tool",
          "level": 4,
          "text": "json_tool"
        },
        {
          "id": "agentgrep.mcp.BackendAvailabilityModel._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.mcp.BackendAvailabilityModel.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel",
          "level": 3,
          "text": "CapabilitiesModel"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.schema_version",
          "level": 4,
          "text": "schema_version"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.name",
          "level": 4,
          "text": "name"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.version",
          "level": 4,
          "text": "version"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.read_only",
          "level": 4,
          "text": "read_only"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.agents",
          "level": 4,
          "text": "agents"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.search_types",
          "level": 4,
          "text": "search_types"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.adapters",
          "level": 4,
          "text": "adapters"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.tools",
          "level": 4,
          "text": "tools"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.resources",
          "level": 4,
          "text": "resources"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.prompts",
          "level": 4,
          "text": "prompts"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.backends",
          "level": 4,
          "text": "backends"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel._abc_impl",
          "level": 4,
          "text": "_abc_impl"
        },
        {
          "id": "agentgrep.mcp.CapabilitiesModel.model_config",
          "level": 4,
          "text": "model_config"
        },
        {
          "id": "server-helpers",
          "level": 2,
          "text": "Server helpers"
        },
        {
          "id": "agentgrep.mcp.normalize_agent_selection",
          "level": 3,
          "text": "normalize_agent_selection()"
        },
        {
          "id": "agentgrep.mcp.list_source_models",
          "level": 3,
          "text": "list_source_models()"
        },
        {
          "id": "agentgrep.mcp.build_capabilities",
          "level": 3,
          "text": "build_capabilities()"
        },
        {
          "id": "agentgrep.mcp.build_mcp_server",
          "level": 3,
          "text": "build_mcp_server()"
        },
        {
          "id": "agentgrep.mcp.main",
          "level": 3,
          "text": "main()"
        }
      ]
    },
    {
      "title": "Resources",
      "description": "MCP resources expose passive read-only data at agentgrep:// URIs. Clients read them with resources/read.",
      "section": "Documentation",
      "url": "/mcp/resources/",
      "markdownUrl": "/mcp/resources.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Resources"
        },
        {
          "id": "capability-summary",
          "level": 2,
          "text": "Capability summary"
        },
        {
          "id": "fastmcp-resource-agentgrep-capabilities",
          "level": 3,
          "text": "agentgrep_capabilities"
        },
        {
          "id": "sources",
          "level": 2,
          "text": "Sources"
        },
        {
          "id": "fastmcp-resource-agentgrep-sources",
          "level": 3,
          "text": "agentgrep_sources"
        },
        {
          "id": "sources-by-agent",
          "level": 2,
          "text": "Sources by agent"
        },
        {
          "id": "fastmcp-resource-template-agentgrep-sources-by-agent",
          "level": 3,
          "text": "agentgrep_sources_by_agent"
        },
        {
          "id": "store-catalog",
          "level": 2,
          "text": "Store catalog"
        },
        {
          "id": "fastmcp-resource-agentgrep-catalog",
          "level": 3,
          "text": "agentgrep_catalog"
        },
        {
          "id": "store-roles",
          "level": 2,
          "text": "Store roles"
        },
        {
          "id": "fastmcp-resource-agentgrep-store-roles",
          "level": 3,
          "text": "agentgrep_store_roles"
        },
        {
          "id": "store-formats",
          "level": 2,
          "text": "Store formats"
        },
        {
          "id": "fastmcp-resource-agentgrep-store-formats",
          "level": 3,
          "text": "agentgrep_store_formats"
        }
      ]
    },
    {
      "title": "Tools",
      "description": "agentgrep’s tools are read-only. They return structured Pydantic models and protect private paths before serialization.",
      "section": "Documentation",
      "url": "/mcp/tools/",
      "markdownUrl": "/mcp/tools.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Tools"
        },
        {
          "id": "prompt-and-history-search",
          "level": 2,
          "text": "Prompt and History Search"
        },
        {
          "id": "fastmcp-tool-search",
          "level": 3,
          "text": "search"
        },
        {
          "id": "time-windowed-activity",
          "level": 2,
          "text": "Time-Windowed Activity"
        },
        {
          "id": "fastmcp-tool-recent-sessions",
          "level": 3,
          "text": "recent_sessions"
        },
        {
          "id": "store-discovery",
          "level": 2,
          "text": "Store Discovery"
        },
        {
          "id": "fastmcp-tool-find",
          "level": 3,
          "text": "find"
        },
        {
          "id": "structured-source-listing",
          "level": 2,
          "text": "Structured Source Listing"
        },
        {
          "id": "fastmcp-tool-list-sources",
          "level": 3,
          "text": "list_sources"
        },
        {
          "id": "required-pattern-filtering",
          "level": 2,
          "text": "Required-Pattern Filtering"
        },
        {
          "id": "fastmcp-tool-filter-sources",
          "level": 3,
          "text": "filter_sources"
        },
        {
          "id": "discovery-counts",
          "level": 2,
          "text": "Discovery Counts"
        },
        {
          "id": "fastmcp-tool-summarize-discovery",
          "level": 3,
          "text": "summarize_discovery"
        },
        {
          "id": "catalog",
          "level": 2,
          "text": "Catalog"
        },
        {
          "id": "fastmcp-tool-list-stores",
          "level": 3,
          "text": "list_stores"
        },
        {
          "id": "fastmcp-tool-get-store-descriptor",
          "level": 3,
          "text": "get_store_descriptor"
        },
        {
          "id": "fastmcp-tool-inspect-record-sample",
          "level": 3,
          "text": "inspect_record_sample"
        },
        {
          "id": "diagnostics",
          "level": 2,
          "text": "Diagnostics"
        },
        {
          "id": "fastmcp-tool-validate-query",
          "level": 3,
          "text": "validate_query"
        }
      ]
    },
    {
      "title": "TUI",
      "description": "The agentgrep ui command launches the interactive Textual explorer over the same Codex, Claude Code, Cursor, and Gemini stores the rest of the CLI walks. It is read-only — agentgrep never mutates t...",
      "section": "Documentation",
      "url": "/tui/",
      "markdownUrl": "/tui/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "TUI"
        },
        {
          "id": "examples",
          "level": 2,
          "text": "Examples"
        },
        {
          "id": "command",
          "level": 2,
          "text": "Command"
        },
        {
          "id": "ui-usage",
          "level": 3,
          "text": "Usage"
        },
        {
          "id": "ui-positional-arguments",
          "level": 3,
          "text": "Positional Arguments"
        },
        {
          "id": "key-interactions",
          "level": 2,
          "text": "Key interactions"
        },
        {
          "id": "see-also",
          "level": 2,
          "text": "See also"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "The agentgrep.ui subpackage holds the streaming Textual explorer. Textual is imported lazily inside build_streaming_ui_app() via importlib.import_module, so bare import agentgrep does not pull Text...",
      "section": "Documentation",
      "url": "/tui/reference/",
      "markdownUrl": "/tui/reference.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        },
        {
          "id": "argument-type",
          "level": 2,
          "text": "Argument type"
        },
        {
          "id": "agentgrep.UIArgs",
          "level": 3,
          "text": "UIArgs"
        },
        {
          "id": "agentgrep.UIArgs.initial_query",
          "level": 4,
          "text": "initial_query"
        },
        {
          "id": "agentgrep.UIArgs.color_mode",
          "level": 4,
          "text": "color_mode"
        },
        {
          "id": "agentgrep.UIArgs.__init__",
          "level": 4,
          "text": "__init__()"
        },
        {
          "id": "entry-points",
          "level": 2,
          "text": "Entry points"
        },
        {
          "id": "agentgrep.ui.app.run_ui",
          "level": 3,
          "text": "run_ui()"
        },
        {
          "id": "agentgrep.ui.app.build_streaming_ui_app",
          "level": 3,
          "text": "build_streaming_ui_app()"
        },
        {
          "id": "filter-and-display-helpers",
          "level": 2,
          "text": "Filter and display helpers"
        },
        {
          "id": "agentgrep.cached_haystack",
          "level": 3,
          "text": "cached_haystack()"
        },
        {
          "id": "agentgrep.clear_haystack_cache",
          "level": 3,
          "text": "clear_haystack_cache()"
        },
        {
          "id": "agentgrep.compute_filter_matches",
          "level": 3,
          "text": "compute_filter_matches()"
        },
        {
          "id": "agentgrep.format_timestamp_tig",
          "level": 3,
          "text": "format_timestamp_tig()"
        },
        {
          "id": "agentgrep.ui.app.scroll_percent",
          "level": 3,
          "text": "scroll_percent()"
        }
      ]
    }
  ]
}
