Inspiration

Most AI integrations are based on persistent access: connect an account, grant permissions, and leave those permissions available until somebody revokes them.

I wanted to explore a different model:

What if an AI could borrow a capability instead of permanently owning it?

Blink Borrow treats access as temporary authority. A person makes a capability available only when they choose. The AI can discover that the capability exists, but it cannot see the private payload. When the AI requests it, the capability holder sees what is being requested and why, then chooses whether to Approve once or Deny.

The core lifecycle is:

Discover → Request → Approve → Borrow → Revoke

What it does

Blink Borrow connects two browsers:

an Agent browser exposing tools through WebMCP a Capability Holder browser containing temporary capabilities and the human approval gate

The current build demonstrates:

Private Note — one-time private text Text / JSON — structured or larger text payloads Small Text File — TXT, JSON, CSV or Markdown, with metadata inspection separated from content access Page Context — sanitized title, URL and visible page text

The AI first sees only a manifest describing what capabilities are available.

It does not receive the private payload during discovery.

When the AI requests a capability, the remote holder receives a live permission request showing the capability and the AI's stated reason.

The holder then chooses:

Deny — nothing is released.

Approve once — the payload crosses the direct browser-to-browser connection and the one-time capability is immediately consumed.

Blink Borrow also includes END & FORGET, which closes the temporary session and removes access to the borrowed capabilities.

How we built it

Blink Borrow uses:

WebMCP / document.modelContext.registerTool() for the AI-facing tool interface WebRTC DataChannel for direct browser-to-browser capability transfer Netlify Functions and Netlify Blobs for temporary connection rendezvous/signaling JavaScript, HTML and CSS Browser memory for armed capability payloads until approval

Netlify helps the two browsers establish the connection, but the private capability payload is designed to travel over the direct peer-to-peer WebRTC DataChannel.

The Agent side registers six WebMCP tools for capability discovery, requests, private notes, file metadata, file contents and session status.

For Small Text Files, metadata inspection is deliberately separated from actual content access. The AI can inspect what has been offered without automatically receiving the contents.

Privacy and human control

Blink Borrow is designed around temporary authority:

private payloads remain local until approval discovery exposes metadata instead of private contents the AI can provide a reason for each request the human can deny any request one-time capabilities are consumed immediately after successful delivery refreshing the holder destroys armed in-memory capabilities END & FORGET terminates the temporary session

Page Context adds another privacy layer.

Before it can be shared, Blink Borrow sanitizes the context locally by removing control-plane UI, stripping URL query strings and fragments, and redacting the active session code.

Challenges we ran into

One major challenge involved file access.

A generic file capability approach was blocked by the browser security layer before the request reached the human approval stage.

Instead of attempting to bypass that protection, I redesigned the capability flow:

expose a dedicated metadata-only inspection tool use a separate explicit tool for requesting file contents limit access to the file already selected by the holder require human approval before the contents cross the P2P connection

Another challenge involved Page Context privacy. An early version could include visible session information, so I added local sanitization before the capability is armed.

Accomplishments that we're proud of

The working build demonstrates the complete WebMCP capability lifecycle with a real agent environment:

ChatGPT discovers remote capabilities through WebMCP private payloads stay hidden during discovery the AI requests a capability with a stated reason another browser receives the live approval request the human can approve once or deny approved data crosses the direct P2P connection one-time capabilities disappear after use file metadata can be inspected without reading file contents file contents require a separate explicit request Page Context is sanitized before sharing the session can be terminated with END & FORGET The most important part is that the human approval screen is not decorative. It is genuinely in the data path.

What we learned

WebMCP gives websites a powerful way to expose structured tools to AI agents, but tool access also needs a permission model that humans can easily understand.

Blink Borrow showed me that agent access does not always have to mean permanent authorization.

Temporary capability leases can make the request, reason, scope, approval and revocation visible to the person who controls the data.

What's next for Blink Borrow

Blink Borrow could evolve into a reusable temporary capability layer for AI agents.

Future directions include:

capability receipts without logging private payloads explicit expiration timers richer capability manifests optional TURN support additional browser and device capabilities standardized temporary-capability semantics across different agents and applications

The larger idea is simple:

Let AI borrow narrowly scoped powers when needed, instead of giving it broad permanent access.

Built With

Share this project:

Updates

Submission history