docs: a plan for third-party integrations (MCP, not connectors) - #322
Open
ivanmkc wants to merge 1 commit into
Open
docs: a plan for third-party integrations (MCP, not connectors)#322ivanmkc wants to merge 1 commit into
ivanmkc wants to merge 1 commit into
Conversation
We have been building the expensive version of a solved problem. src/google/ is a hand-rolled OAuth client, calendar client and Gmail client -- several hundred lines, per provider, that we now own forever. Dropbox would be that again. Maps would be that again. Meanwhile the bridge already runs Claude Code, Codex and Gemini, and those are already MCP clients. Any MCP server the household has configured is reachable through the agent we are already talking to, authenticated as them, with no connector code from us. That is the substrate; hand-rolled clients become the exception, justified only where MCP cannot reach -- calendar read and mail triage, which must work offline and deterministically. Three tiers in preference order: through the bridge to the agent's own MCP servers; remote MCP over HTTP from the browser when there is no bridge; and hand-rolled only as the offline path. Plus the parts that are genuinely ours to build: tool discovery, a permission model that reuses the pack `uses` allow-list and the existing trust ladder, and source adapters -- because a fact that arrives through a tool with no deep link silently degrades the lineage view to "came from somewhere". Also sets out how to reuse T3 Code properly rather than rewriting it. The part worth reusing is the driver table -- which binaries exist, which flags produce non-interactive output, what "signed out" looks like on stderr -- because it is empirical and goes stale. Take it as data, with attribution, after reading their licence. Four unknowns are stated rather than papered over, including the one the plan hinges on: whether the CLI agents allow direct tool invocation of their MCP servers or only conversational use. Verify before building on it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Sep 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The stack
localStoragefor the test suite on Node 25@ivanmkc/termchart-canvas; injectable interact transportEvery branch in the stack was checked out on its own and verified independently:
npm install,tsc --noEmitfor every package,npm testacross the workspace, and the offline e2e where it exists. All twenty are green — no branch depends on a later one to build or pass. Full viewer e2e (11 suites, 106 assertions) was run on #312 as the behaviour-preservation evidence for the extraction.Stack position: 13 of 14. Base:
lifeboard/11-docs. Documentation only — no code changes.A plan for reaching Gmail, Drive, Dropbox, Maps and everything after them, plus how to reuse T3 Code rather than rewrite it. Full text:
docs/lifeboard/integrations-plan.md.The finding: we have been building the expensive version of a solved problem.
src/google/is a hand-rolled OAuth client, calendar client and Gmail client — several hundred lines, per provider, that we now own forever. Dropbox would be that again. Maps would be that again.Meanwhile the bridge already runs Claude Code, Codex CLI and Gemini CLI, and those are already MCP clients. Any MCP server the household has configured is reachable through the agent we are already talking to, authenticated as them, with no connector code from us.
Three tiers, in preference order:
src/google/already is, and it should stop there.What is genuinely ours to build: tool discovery and invocation on the bridge; a permission model reusing the pack
usesallow-list and the existing trust ladder; and source adapters, because a fact arriving through a tool with no deep link silently degrades the lineage view to "came from somewhere". That last one is the piece most likely to be skipped and most likely to matter.On reusing T3 Code: the part worth reusing is the driver table — which binaries exist, which flags produce non-interactive output, what "signed out" looks like on stderr. It is empirical and goes stale, and a shared project maintains it better than we can. The plan is: read their licence first, prefer taking it as data rather than code, attribute, and contribute back. I could not evaluate their licence or source in this session — no network — so that is a sequence to follow, not a conclusion about their code.
Four unknowns are stated rather than papered over, including the one the plan hinges on: whether the CLI agents allow direct tool invocation of their MCP servers, or only conversational use. Step 0 is verifying them.
No verification claims: this PR changes no code. Suites unchanged.
🤖 Generated with Claude Code