The Share To Pattern: Turning a Phone's Share Sheet into a Durable Agent
The itch
For a long time I'd wanted some kind of workflow that both analysed articles I was reading and kept a running list of them. The obvious answers never stuck: a spreadsheet meant opening a spreadsheet, and Chrome bookmarks are something I've never once managed to use properly on a phone. Both are the kind of friction that quietly kills a habit before it starts.
This summer I'd also been spending time with MCP Apps, and wanted a use case that was genuinely useful to me — not a demo — while giving me a real reason to work through durable storage for a workflow, not just a single request/response.
The use case
Use AI-assisted analysis — the Workspace's Article Analyser view — to critically read and challenge the articles I actually care about, rather than just skim and forget them.
The approach: give the app an article URL, and a lens to read it through —
- Explain — what is this actually arguing, in plain terms
- Challenge — where's the argument strong, where's it thin
- Transfer — does this apply somewhere it wasn't written for (an unrelated field, a different problem I'm already working on)
- Situate — how does this connect to anything I've already saved
Heavy subject matter gets a lot easier to hold onto with a familiar frame applied consistently, rather than re-inventing a reading strategy every time.
Challenge, by way of Toulmin
The Challenge lens leans on Stephen Toulmin's model of argument. Toulmin (1922–2009), a British philosopher trained at Cambridge, laid it out in The Uses of Argument (1958) — reacting against the idea that formal logic could describe how arguments actually work in practice, in fields like law, science and ethics. His model breaks an argument into six working parts instead of a syllogism:
- Claim — the conclusion being argued for
- Grounds — the evidence offered to support it
- Warrant — the reasoning that connects the grounds to the claim
- Backing — support for the warrant itself, when it isn't self-evidently credible
- Qualifier — how strongly the claim actually holds ("probably", "in most cases" — rarely "always")
- Rebuttal — the conditions under which the claim would fail
It's a standard tool in composition and critical-thinking teaching for a reason: it forces the claim and the reasoning behind it apart, which is exactly the seam a weak argument usually hides in.
Architecture: the share-target front door
None of the above is unusual for an MCP App — Workspace-style tools in this catalogue already do this shape of thing. The part I think is actually novel is how I reach for it.
I registered the app as a share target on my phone (the Web Share Target API — a PWA manifest entry that lists your app directly in the OS's native share sheet, the same one every phone already has). This is an Android/Chrome mechanism specifically — Reading something anywhere on the phone — Chrome, Twitter, a news reader — I hit Share, pick the app, and that's it. No copying a link into a chat, no typing "analyse this", no opening anything separately.
The share-target page itself is deliberately a nobody: a stateless client-side redirect that reads the shared URL out of the query string and hands it straight to the real Workspace, with no identity check of its own — an interactive login would break the instant-open feel a share sheet is supposed to have. The identity gate that actually matters sits one hop later, on the Workspace itself: Cloudflare Access, checking the Google-authenticated session already sitting in the phone's browser against a real allow-list, the moment the redirect lands — before anything in my own durable store is touched.
That split matters as much as the share-target trick itself: the open
stub carries nothing worth protecting, and the real gate is what ties
the request to one specific durable artifact — the same per-user store
a saved reading lands in via save_reading, and comes back out of
later via list_readings, from any device, without re-authenticating
into a spreadsheet or hunting through bookmarks that never synced
properly in the first place.
Why this is worth generalising
Durable, per-user state is one of the more interesting things MCP Apps can do that a stateless chat turn can't — but it only matters if reaching it is actually easy. A share target is a genuinely low-effort front door: no new app to remember, no context-switch, just the button that's already on every share sheet on the device. If you're building an MCP App with any kind of durable store behind it, worth asking whether a share target — not a chat prompt — is the natural way people would actually want to reach it.