{"_ai_door":{"see":"https://miscsubjects.com/start","note":"Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."},"_self":{"principle":"Self-explaining payload — no external context required. This _self block describes what you are reading and where to look next.","widget":"article_topology","feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","contains":"claims, sources, anecdotes, question_graph slice","slug":"web-models-as-first-class-capabilities","urls":{"read":"https://miscsubjects.com/api/articles/web-models-as-first-class-capabilities/topology"},"how_to_use":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","write":null,"imessage":null,"router_tag":null,"proof_chain":[{"step":1,"claim":"Articles are voxel graphs of tiered claims, not prose blobs.","verify":"https://miscsubjects.com/api/articles/constitution"},{"step":2,"claim":"Claims link to hash-chained sources via source_ids.","verify":"https://miscsubjects.com/api/articles/web-models-as-first-class-capabilities/sources"},{"step":3,"claim":"Ask reads topology; ingest/claim append to ledger.","verify":"https://miscsubjects.com/api/protocol"},{"step":4,"claim":"Models queue growth: populate → collaborate → repair → reflex.","verify":"https://miscsubjects.com/api/protocol/grow"},{"step":5,"claim":"Graph proves its own shape (reflex) and $/claim (yield).","verify":"https://miscsubjects.com/graph.html?layer=reflex"},{"step":6,"claim":"Full feature index + _explain on every API response.","verify":"https://miscsubjects.com/api/articles/system-map"}],"related_features":[{"id":"ask","name":"Ask protocol","what":"Answer only from topology; creates question_node with gaps and ingest_hint.","urls":{"read":"https://miscsubjects.com/api/articles/web-models-as-first-class-capabilities/prompts","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"graph_topology","name":"Cross-article graph","what":"Merged claims/sources across condition+stack slugs for one question.","urls":{"read":"https://miscsubjects.com/api/articles/web-models-as-first-class-capabilities/graph-topology?question=..."}},{"id":"question_graph","name":"Question graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output).","urls":{"read":"https://miscsubjects.com/api/articles/web-models-as-first-class-capabilities/question-graph","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"voxels","name":"Voxel graph","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","urls":{"read":"https://miscsubjects.com/api/articles/web-models-as-first-class-capabilities/voxels","write":"https://miscsubjects.com/api/protocol/claim"}}],"system_map":"https://miscsubjects.com/api/articles/system-map","system_map_markdown":"https://miscsubjects.com/api/articles/system-map?format=markdown","not_medical_advice":true},"_explain":{"feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","why":"Every feature is auditable collective intelligence","how":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","model":null,"verifies":null,"urls":{"read":"https://miscsubjects.com/api/articles/web-models-as-first-class-capabilities/topology"},"imessage":null,"router":null,"related":[{"id":"ask","what":"Answer only from topology; creates question_node with gaps and ingest_hint."},{"id":"graph_topology","what":"Merged claims/sources across condition+stack slugs for one question."},{"id":"question_graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output)."},{"id":"voxels","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance."}],"not_medical_advice":true},"slug":"web-models-as-first-class-capabilities","title":"Web Models as First-Class Capabilities","register":"build","tags":["build","browser-models","oip","flows","identity","learned-flows"],"updated_at":"2026-09-06T21:29:12.901Z","body_excerpt":"A logged-in ChatGPT, Claude, Grok or Gemini web session is now an ordinary capability in this build. A caller names a provider and a prompt, and gets back the exact answer the web model gave, with a receipt. The same web model can call the rest of the build by writing a tag. Both directions run through the same Directory, the same flows, the same scheduler and the same ledger as every HTTP tool and API agent here. What existed before, what the reference projects already prove, what was added, exactly how it was tested, what broke, and what is still missing follow in that order.\n\n## Copying between tabs was the bottleneck, and it left no record\n\nFive chat products carry paid subscriptions whose web sessions have no programmatic door. The same vendors sell APIs, metered separately, with connectors that differ from one another, and a model in one tab cannot see what a model in another tab did. Getting ChatGPT Web to draft, Claude Web to audit and Grok Web to adjudicate meant copying text between tabs by hand. The copy was the bottleneck, and it left no record.\n\nThe build already had the other half: a Directory of about a thousand capabilities behind one dispatch call, a flow grammar that composes them, a scheduler, an event bridge, scoped bearer tokens, and a ledger that records every invocation. Web models were the one class of worker that could not be a row in it.\n\n## What existing projects already solve\n\nSource was read, not marketing. Three mechanically different things get called \"web model MCP\" and they should not be conflated.\n\n**Drive the chat page and scrape the answer.** [mcp-web-llm](/a/mcp-web-llm) attaches Playwright to a logged-in Chrome over CDP, types into ChatGPT, Claude, Gemini, DeepSeek, Grok and Qwen, and polls the DOM until the last assistant node stops changing. Its README says \"No API keys or tokens required.\" It has no session object, no conversation identity, no tool loop, and it states that its memory feature \"has been rolled back.\" [agentify desktop](/a/agentify-desktop) is the same idea built as a desktop app with a selector file and a rate governor. [ChatGPT-Web2API](/a/chatgpt-web2api) is the one project that reads the provider's own backend from inside the page and uses its end-of-turn flag as the completion signal, addressing real conversation ids.\n\n**Give the web model tools.** [MCP-WebLLM](/a/mcp-webllm) is a Chrome extension that pastes a tool manifest into the chat, watches the DOM for a fenced block, executes the call against a local MCP server and pastes the result back. It is the inverse direction of mcp-web-llm and the closest precedent for the relay lane below. [codex-chatgpt-web](/a/codex-chatgpt-web) does the same job the robust way for one host and one provider, by registering a real MCP server as a ChatGPT connector so ChatGPT's own agent loop calls the tools.\n\n**Generic browser control.** [BrowserMCP](/a/browsermcp) and [graph-memory browser-mcp](/a/graph-memory-browser-mcp) drive a browser through MCP without knowing any model. The second has the best session model in the set, named on-disk profiles, network body capture, and one tool registry projected into both MCP and REST. [browser-use](/a/browser-use) is the large browser-agent ecosystem; its profile vocabulary and its thirteen watchdogs are the honest catalogue of what goes wrong in long-running browser workers.\n\nNone of the eight projects has workflow participation, cron, event triggers, a shared state object across vendors, an artifact promoted from a trace, or a provenance plane. Not one. That is not a criticism. They are relays. This build already had those other parts and needed the relay.\n\n## What OpenClaw does with skills and self-learning\n\n[OpenClaw](/a/openclaw-self-learning) is the important comparison, because it is the popular personal-agent gateway and because its self-learning system really does turn work into durable artifacts. Read at source: what is learned is a `SKILL.md`, natural-language instructions with YA","ranking":"safety-first (interaction_risk/limitations), then quote-gated effective_weight","claims":[{"id":"c1","text":"A logged-in ChatGPT Web session invoked as the Directory capability CHATGPT_WEB returned the exact text GATEWAY_LIVE_OK with substrate browser_web (receipt inv_rclmphgk7z).","tier":"observational","section":"The live tests, with receipts","interaction_risk":false,"status":"active","source_ids":["s1"],"why_material":"the acceptance condition of the whole feature","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c2","text":"Claude Web, handed only the state handle state://lyb1m6yseu, recovered GATEWAY_LIVE_OK without a human copying text between tabs (receipt inv_mo6pgi8yxm).","tier":"observational","section":"The live tests, with receipts","interaction_risk":false,"status":"active","source_ids":["s2"],"why_material":"proves cross-vendor handoff through shared state","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c3","text":"ChatGPT Web called the Directory capability QUAKE_FEED by emitting a text tag through WEBMODEL_AGENT, with no MCP, connector or credential given to the vendor (receipt inv_uwnn7ketmh).","tier":"observational","section":"The live tests, with receipts","interaction_risk":false,"status":"active","source_ids":["s3"],"why_material":"proves the reverse direction: a web model operating the build","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c4","text":"A ledger row for a completed browser turn fired an ordinary event automation (automation 34, receipt inv_guxgetocb7).","tier":"observational","section":"The live tests, with receipts","interaction_risk":false,"status":"active","source_ids":["s4"],"why_material":"proves event participation without browser-specific code","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c5","text":"FLOW_LEARN compiled two hand-done receipts into the executable flow row QUAKE_REGION_1BV5, which then ran as a capability (receipt inv_0benrtdq4x).","tier":"observational","section":"The live tests, with receipts","interaction_risk":false,"status":"active","source_ids":["s5"],"why_material":"the learned-flow claim rests on it","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c6","text":"A valid token bound to one device was refused DEVICE_NOT_APPROVED from a second device and DEVICE_REVOKED after revocation while CAP_EXPLAIN still reported the token live.","tier":"observational","section":"The live tests, with receipts","interaction_risk":false,"status":"active","source_ids":["s6"],"why_material":"proves authority and context are evaluated separately","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c7","text":"mcp-web-llm exposes six logged-in web models as MCP tools with DOM stability polling and no session object, and its README states its memory feature was rolled back.","tier":"definition","section":"What existing projects already solve","interaction_risk":false,"status":"active","source_ids":["s7"],"why_material":"establishes the precedent being compared against","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c8","text":"OpenClaw self-learning persists natural-language SKILL.md instructions that a later agent re-reads and reasons through; no learning path consumes its trajectory recorder.","tier":"definition","section":"What OpenClaw does with skills and self-learning","interaction_risk":false,"status":"active","source_ids":["s8"],"why_material":"the skill-versus-flow distinction depends on it","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c9","text":"Multi-line prompts typed with the Enter key were submitted after their first line by every provider composer, which is why the first Claude handoff received a briefing with no task.","tier":"observational","section":"What failed during implementation","interaction_risk":false,"status":"active","source_ids":["s9"],"why_material":"the most consequential implementation failure, now fixed","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false}],"sources":[{"id":"s1","url":"https://miscsubjects.com/api/dispatch?confirm=inv_rclmphgk7z","title":"Receipt inv_rclmphgk7z, CHATGPT_WEB","quote":"CHATGPT_WEB produced material output at 2026-09-06T11:48:31-07:00.","claim_ids":[],"hash":"039e0ce812584c405d21037b2f77f0f944cb782f3558c3cf8b17ed6052575953"},{"id":"s2","url":"https://miscsubjects.com/api/dispatch?confirm=inv_mo6pgi8yxm","title":"Receipt inv_mo6pgi8yxm, Claude Web via shared state","quote":"WEBMODEL_SEND produced material output at 2026-09-06T11:48:02-07:00.","claim_ids":[],"hash":"b948166af10b049226362c5943afad1394bd5777483523f3cfc20583aaccb2f2"},{"id":"s3","url":"https://miscsubjects.com/receipt/inv_uwnn7ketmh","title":"Receipt inv_uwnn7ketmh, WEBMODEL_AGENT relay","quote":"The most recent magnitude-4-or-greater earthquake was 91 km south of Nikolski, Alaska, with a magnitude of 4.0.","claim_ids":[],"hash":"85cf646433ed7317903e291a62cf13173eed943c31dcd96bb370b088e073b4f9"},{"id":"s4","url":"https://miscsubjects.com/api/dispatch?confirm=inv_guxgetocb7","title":"Receipt inv_guxgetocb7, automation fired by a browser turn","quote":"NOW produced material output at 2026-09-06T11:48:06-07:00.","claim_ids":[],"hash":"16032b6ab5da4d2b70738b97cec895d4d0fb534b08775e56a7d977b53b9797d9"},{"id":"s5","url":"https://miscsubjects.com/receipt/inv_0benrtdq4x","title":"Receipt inv_0benrtdq4x, learned flow QUAKE_REGION_1BV5","quote":"The southern East Pacific Rise isn't in any country","claim_ids":[],"hash":"a44ff69d045e4dd95c2660f1467247e8a57c8a306e5985023fc7a644e5e022a7"},{"id":"s6","url":"https://miscsubjects.com/receipt/inv_f8uy3uac3t","title":"Receipt inv_f8uy3uac3t, DEVICE_REVOKE","quote":"every capability context bound to this device now denies with DEVICE_REVOKED","claim_ids":[],"hash":"89ceeefbe346c6aafec9b13b775b94950a65640bfeff1b9ceef99a1bb48d579b"},{"id":"s7","url":"https://github.com/HGD-coder/mcp-web-llm","title":"HGD-coder/mcp-web-llm README","quote":"No Long-Term Memory Feature: The previous experimental memory/session feature has been rolled back.","claim_ids":[],"hash":"5b2ca39dd7ea48a637ecca8e15c9536069a0120cc71826af66556d3d555759a8"},{"id":"s8","url":"https://github.com/openclaw/openclaw/blob/main/docs/tools/self-learning.md","title":"OpenClaw docs: self-learning","quote":"Capture a verified recovery, a standing user requirement for this class of task, or a stable procedure that saves at least two future model round trips.","claim_ids":[],"hash":"018469f380b1be8c13e3a4c5a384735e1c98fbc69f42d82922d66023069f9dfe"},{"id":"s9","url":"https://miscsubjects.com/api/dispatch?confirm=inv_0hrhns715v","title":"Receipt inv_0hrhns715v, Claude handoff before the typing fix","quote":"WEBMODEL_SEND produced material output at 2026-09-06T11:35:01-07:00.","claim_ids":[],"hash":"624ea2a41f3ccac57c5a77e1724d080219b7e7f3dd54da3eb948ae4bae937b5e"}],"anecdotal_sources":[],"scientific_sources":[],"user_reports":[],"related_articles":[],"question_graph":{"slug":"web-models-as-first-class-capabilities","questions":[],"evidence":[],"edges":[],"counts":{"questions":0,"evidence":0,"edges":0}},"honesty":{"active_claims":9,"retracted_claims":0,"cut_claims":0,"challenges":0,"scrub_events":0,"note":"Retracted/cut claims stay on ledger but are excluded from ask unless ?include_inactive=1"},"counts":{"claims":9,"claims_total":9,"sources":9,"anecdotal":0,"scientific":0,"user_reports":0,"questions":0,"evidence_ingests":0}}