A data source is a tool you already work in — Notion, Google Drive, Slack, or
any remote MCP server — that you connect so OneLamp can pull its documents into
your Library and index them on demand, enriching the same
living context layer your AI tools draw on. It’s not a pass-through
aggregator: pulled-in content becomes part of your context, not a relay to the
original tool. Connect a tool once, then sync from it whenever you want fresh
material.
In MCP terms, this is OneLamp acting as a client connecting out to your
other servers — the mirror image of your AI tools connecting in to OneLamp.
How it works
Connect
sources(action: "connect") registers an upstream MCP server by URL. If it
needs OAuth, the tool returns an authorization URL to open once.
Discover
sources(action: "list") lists your connected servers, their connection
state, and the tools each one exposes.
Sync
sources(action: "sync") calls a tool on a data source (e.g. a search or
get-page tool) and ingests its text output as a Library source — compiled into
pages in the background.
Each user’s outbound connections and their OAuth tokens live in that user’s own
isolated agent — they aren’t shared, and they’re scoped to you.
Untrusted by default
Data sources are treated as untrusted. Their output is filed as source
data to be compiled — it is never followed as instructions and can’t redirect
your AI tool’s behavior or escalate access.
Only connect MCP servers you trust to read documents from. A data source’s tool
output becomes Library source material; OneLamp ingests it as data, never as
commands.
Example
sources(action: "connect", name: "notion", url: "https://mcp.notion.com/mcp")
→ returns an authorization URL → you authorize once
sources(action: "list")
→ notion (id: ...) → tools: search, fetch
sources(action: "sync", server_id: "...", tool: "search", args: { query: "roadmap" })
→ ingests the results into your Library