Skip to content

Examples

The same loop fits every source: add it once, search across it, then reopen the exact hit. The scenarios below show what that looks like in practice. Each mfs command is also one plain-language request to an agent — /mfs-ingest to add a source, /mfs-find to search and read (Codex uses $mfs-ingest / $mfs-find).

For the URI shape and credentials of any connector, see its page under Connectors. First time configuring a source? Don't hand-write the TOML — tell the mfs-ingest skill what you want and it figures out the credentials and writes the config for you.

Your agent's memory and skills

Past-session memory files (.md, .jsonl) and reusable skills become one searchable namespace — the prompt you tuned last week or a decision logged three sessions ago is one query away.

mfs add path/to/memory     # /mfs-ingest index my session memory
mfs add path/to/skills     # /mfs-ingest index my skills
mfs search "the prompt I tuned for refund disputes" --all
file://local/.agents/memory/2026-05-31.jsonl  score=0.88
  {"role":"note","text":"refund-dispute prompt: lead with the order ID, then ..."}
file://local/.agents/skills/support-triage/SKILL.md  score=0.74
  ## Refund disputes — confirm the order ID first, then check the gateway log ...

Reopen the hit to get the full note: mfs cat file://local/.agents/memory/2026-05-31.jsonl.

Your codebases

Index the repos your agent reads or writes and grep them by meaning — find the helper by what it does, not the name you've forgotten.

mfs add path/to/repo
mfs search "where do we retry failed webhook deliveries?" path/to/repo
file://local/repos/payments/webhooks/deliver.go  score=0.84
  87  // cap exponential backoff at 6 attempts, then dead-letter
  88  func (d *Dispatcher) retryDelivery(ev Event) error {

The hit carries a line range, so you reopen exactly those lines: mfs cat file://local/repos/payments/webhooks/deliver.go --range 80:110.

Documents, images, any format

PDFs, Word docs, Markdown, screenshots — MFS converts each to text locally (PDF / docx → Markdown, no API key), and with a vision model enabled it describes images too. One search spans every format.

mfs add path/to/docs
mfs add path/to/screenshots
mfs search "audit-log retention and the dashboards that show it" --all
file://local/design-docs/data-governance.pdf  score=0.86
  ... Audit logs are retained for 400 days, then moved to cold storage ...
file://local/screenshots/grafana-2026-06-02.png  score=0.71
  A Grafana dashboard; the p99 latency panel climbs to ~800 ms around 14:10 ...

Note that structured text like .csv and .json is browseable and greppable but not part of semantic search — see the file connector.

Cloud drives and buckets

Mount a Google Drive or S3 bucket; its files become searchable text alongside your local ones — no syncing, no downloads.

mfs add gdrive://my-drive --config ./gdrive.toml
mfs add s3://acme-exports --config ./s3.toml
mfs search "the Q3 board deck" --all
gdrive://my-drive/Board/2026-Q3-review.pdf  score=0.87
  ... Q3 highlights: net revenue retention 118%, two enterprise logos closed ...
s3://acme-exports/finance/2026-q3-summary.csv  score=0.70
  quarter,net_revenue,nrr,churn  2026Q3,4.2M,1.18,1.4% ...

Online sources

Crawl a docs site or mount a GitHub repo with its issues — remote content lands in the same namespace as your local files.

mfs add web://docs.your-product.com
mfs add github://your-org/your-repo --config ./github.toml
mfs search "how do we rotate signing keys?" --all
web://docs.your-product.com/security/key-rotation  score=0.88
  ... Signing keys rotate every 90 days; trigger an early rotation from the admin console ...
github://your-org/your-repo/_meta/issues.jsonl  score=0.75
  #312  "Automate signing-key rotation"  state=open  labels=[security]

Team chat and tickets

Mount Slack, Gmail, Jira, Linear and pull the thread, the ticket, and the email behind a decision into one answer.

mfs add slack://acme --config ./slack.toml
mfs add jira://acme  --config ./jira.toml
mfs search "why did we revert the burst guard?" --all
slack://acme/channels/platform__C012345/messages.jsonl  score=0.90
  [Tue 09:40] @carol: reverting the burst guard — it dropped healthy traffic
  [Tue 09:42] @dave:  agreed, reopening PLAT-491 to re-tune the window
jira://acme/projects/PLAT/issues.jsonl  score=0.81
  PLAT-491  "rate-limit guard misfires under burst"  state=Reopened

A chat hit reopens the whole thread, and a ticket reopens by its key: mfs cat jira://acme/projects/PLAT/issues.jsonl --locator '{"key":"PLAT-491"}'.

Customers and support

Pull your CRM and help desk together — the account, its open tickets, and the notes behind a customer issue in one query.

mfs add hubspot://acme  --config ./hubspot.toml
mfs add zendesk://acme  --config ./zendesk.toml
mfs search "why is Globex unhappy with onboarding?" --all
zendesk://acme/tickets/records.jsonl  score=0.88
  #5821  "Onboarding blocked on SSO setup"  status=open  priority=high
hubspot://acme/companies/records.jsonl  score=0.74
  Globex — renewal at risk; onboarding friction flagged by the CSM ...

Production data

Point MFS at Postgres, Mongo, or BigQuery and search rows as text — each row is a file-like object, so mfs cat pulls back the full record.

mfs add postgres://prod --config ./pg.toml
mfs search "refunds stuck in pending over 7 days" postgres://prod/public/orders/rows.jsonl
postgres://prod/public/orders/rows.jsonl  score=0.79
  {"id":"ord_8842","status":"pending","refund_requested_at":"2026-05-30", ...}

Reopen the full row by its key: mfs cat postgres://prod/public/orders/rows.jsonl --locator '{"id":"ord_8842"}'.

One query across everything

With several sources registered, --all fans one query across all of them — files, databases, trackers, chat — in a single result shape, so any hit copies straight into mfs cat.

mfs search "rate-limit guard misfires under burst" --all
slack://acme/channels/oncall__C0A1B2/messages.jsonl  score=0.91
  [Mon 22:14] @alice: ratelimiter pegged 500ms p99 tail, dump attached
jira://acme/projects/PLAT/issues.jsonl  score=0.83
  PLAT-491  "rate-limit guard misfires under burst"  state=In Progress
file://local/repo/src/throttle.go  score=0.71
  42  func handleRateLimit(req Request) error {

The locators are uniform, so the same mfs cat reopens any of them — a line range for the code file, a structured locator for the ticket.