Problem
Businesses rarely lose every file at once. More often, they lose the context, agreement, and authority required to continue safely. A website may still be online while its phone number, minimum order, export availability, or certification wording is stale. Giving an agent better access to that page improves actuation, but it does not establish which claims are still fit to publish or use.
StillHere's thesis is: an agent-ready version of stale information is still stale information.
Solution
StillHere is a human-agent business continuity layer built around five visible stages: Recover → Reconcile → Approve → Publish → Transact.
The challenge demo follows a fictional Ugandan coffee supplier. A bounded assessment separates website condition from business condition. Four recovered records then disagree about a trade phone, Instant Coffee minimum order, Japan availability, and an unsupported legacy certification claim. The Continuity Ledger keeps those sources separate instead of collapsing them into an unqualified profile.
Why WebMCP
This workflow needs structured, contextual browser-agent collaboration rather than scraping or hidden click automation. WebMCP gives the current page a small, typed capability surface. On the Ledger route, an agent can inspect bounded conflict counts and stage source-backed proposals. On the Passport route, it can read the exact published version, search current offerings without losing destination qualifications, and prepare the same visible inquiry form the human sees.
The browser agent never receives an accept or publish tool. Source text cannot alter tool definitions. The human uses visible controls to accept, edit, reject, exclude, or keep a claim unresolved. Only accepted facts enter the Draft Passport, and only the human can publish a new version.
What people and agents can do together
The agent does the high-friction organizational work: it identifies fields needing review, cites recovered sources, stages bounded proposals, searches accepted offerings, and prepares a buyer draft. The human supplies authority: deciding the current phone, editing an MOQ from 2,500 to 3,000, preserving Japan as Available by inquiry, excluding an unsupported certification claim, publishing Passport v2, editing the buyer draft, and approving the exact final state.
That combination was difficult before because an agent could operate an old webpage without knowing whether its contents were current, rejected, unresolved, or authorized. StillHere inserts a visible currentness and approval layer before agent-facing action.
WebMCP implementation
StillHere exposes six direct, route-scoped tools with literal document.modelContext.registerTool(...) calls. /recover registers inspect_business_truth and stage_claim_resolutions. The published Passport registers get_business_passport, search_current_offerings, and prepare_business_inquiry. submit_approved_inquiry is registered dynamically only when the visible valid draft, idempotency key, Passport version, and explicit human approval have the same fingerprint.
Each registration is tied to an AbortController and disappears on route or authority changes. JSON Schema helps selection, while strict runtime parsers independently reject extra keys, invented values, unknown or mismatched sources, invalid qualifications, and stale approval. Editing one approved field removes the submit capability; even a retained executor cannot keep authority.
Execution, resilience, and safety
The public Next.js application is deployed on Vercel, needs no login, and uses a deterministic fictional scenario. IndexedDB retains Ledger, Passport versions, drafts, and receipts on the device. A service worker makes a best-effort cache of the Ledger and Passport after an online visit; cached documents and previously fetched assets may allow degraded-network use, but precaching can be partial. Simplified view persistently removes selected decoration and motion. It does not reduce network requests, and transfer values are cumulative visit-specific browser observations rather than measured savings.
Recovered text is evidence, never an instruction or tool definition. Unsupported certification remains out. No agent can auto-publish. Preparation never implies submission. The receipt is fictional and process-local: no email, order, payment, webhook, or external message is sent. StillHere demonstrates a careful human-agent authority pattern, not identity verification, KYC, a signed credential, or a production delivery system.
Challenges I ran into
The hardest engineering problem was making authority temporary and visible. A normal tool server can stay available after the page state that justified it has changed. StillHere instead ties every registration to the active route and current browser-local state. The final submit capability must disappear when the draft, approval fingerprint, idempotency key, or Passport version changes. That required narrow schemas, independent runtime validation, pure domain rules, and careful cleanup with AbortController.
Another challenge was resilience without overstating it. IndexedDB and a service worker can help after a successful online visit, but they do not make the application universally offline or reduce transfer by themselves. The UI and documentation therefore describe best-effort cached access and keep visit-specific transfer readings separate from claimed savings.
Accomplishments that I am proud of
- Six direct, route-scoped WebMCP tools operating on the same state visible to the human.
- Human-only acceptance, editing, exclusion, and Passport publication.
- A dynamically registered consequential action that exists only for the exact approved draft.
- A complete no-login public demonstration with fictional data, local persistence, responsive layouts, and 86 deterministic tests across 14 files.
- Clear product boundaries: no autonomous publishing, no invented certification, no real message or transaction, and no claim that this demo is an identity or KYC system.
What I learned
WebMCP is most valuable when it does more than replace clicks. Its strongest role here is creating a shared contract between what a person sees and what an agent may do. JSON Schema improves tool selection, but it is not an authorization boundary; callbacks still need strict parsing, source checks, liveness checks, and revocation when visible state changes. I also learned that provenance and uncertainty have to remain first-class product objects rather than being compressed into a confident summary.
What's next
A production version would add authenticated organizations, encrypted shared storage, multi-user review roles, stronger provenance and source-signing options, hosted audit history, and opt-in delivery integrations. Those additions would preserve the same rule demonstrated here: currentness and human authority come before agent actuation.
How to test
No account is required. All business, buyer, and receipt data are fictional. Use ChatGPT's in-app browser or Chrome 149+ with WebMCP testing enabled.
- Open https://stillhere-azure.vercel.app and select Try Demo.
- Run the prefilled assessment and select Review recovered evidence.
- On the Ledger, ask: “Inspect this business's recovered evidence and tell me what needs review.” Expect
inspect_business_truth. - Ask: “Propose source-backed resolutions for these conflicts, but do not accept or publish anything.” Expect
stage_claim_resolutionsand four visible proposals. - As the human: accept phone, edit MOQ 2,500→3,000, accept Available by inquiry, and accept certification exclusion.
- Select Publish Business Passport.
- Ask: “Read the published Business Passport and find current private-label offerings for Japan.” Expect Passport read/search; Instant Coffee remains
AVAILABLE_BY_INQUIRY. - Ask: “Prepare an inquiry for 5,000 units of Instant Coffee for Japan, requesting samples, private-label packaging and Japanese labelling support.” The visible draft changes; nothing submits.
- Enter fictional buyer values, edit quantity to 6,000, and approve. Confirm
submit_approved_inquiryappears. Edit any field to see it disappear; then review and reapprove. - Submit through the agent. The
SH-...result is a fictional demo receipt only.
Reset is in the footer and requires Reset demo → Confirm reset.
Built With
- indexeddb
- next.js
- react
- service
- tailwind
- typescript
- vercel
- webmcp
Log in or sign up for Devpost to join the conversation.